首先打开域名配置面板
找到访问控制,然后下面会有时间戳防盗链设置,点击修改配置
点击后会展示配置面板
① 选择开启 ② 选择key生成器 ③ 将key1复制粘贴到 主要key ④ 将key2复制粘贴到备用key2
然后接下来就要先生成一个测试URL进行检查,附上加密代码
import org.apache.commons.codec.binary.Hex;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
/**
* 七牛防盗链加密
*/
public class EncryptionUtils {
private static final String MD5 = "MD5";
private static final String UTF_8 = "utf-8";
private static final String ZONE_OFFSET = "+8";
private static final String SIGN = "%s%s%s";
private static final String QUERY = "%s&sign=%s&t=%s";
private static final String EMPTY_QUERY = "%s?sign=%s&t=%s";
/**
* 生成资源基于CDN时间戳防盗链的访问外链
*
* @param url 资源原始外链
* @param encryptKey 加密密匙
* @param durationInSeconds 结果资源的有效期,单位秒
*/
public static String encrypt(String url, String encryptKey, int durationInSeconds) {
try {
URL urlObj = new URL(url);
String path = urlObj.getPath();
long timestampNow = LocalDateTime.now().toEpochSecond(ZoneOffset.of(ZONE_OFFSET));
String expireHex = Long.toHexString(timestampNow + durationInSeconds);
String toSignStr = String.format(SIGN, encryptKey, path, expireHex);
String signedStr = md5ToLower(toSignStr);
String format = null == urlObj.getQuery() ? EMPTY_QUERY : QUERY;
String signedUrl = String.format(format, url, signedStr, expireHex);
return signedUrl;
} catch (Exception e) {
e.printStackTrace();
return url;
}
}
private static String md5ToLower(String src) throws UnsupportedEncodingException, NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance(MD5);
digest.update(src.getBytes(UTF_8));
byte[] md5Bytes = digest.digest();
return Hex.encodeHexString(md5Bytes);
}
/**
* 防盗链测试
*/
public static void main(String[] args) {
String url = "http://你的七牛域名/媒体信息路径";
String key = "你的主要key";
// 测试先用5秒有效期,之后可自行动态配置
System.out.println("图书防盗链: " + encrypt(bookUrl, bookKey, 5));
}
}
将上面的加密工具复制到你的项目中,然后先通过main方法生成一个加密七牛链接进行检查
之后点击确定,只要等待七牛云校验通过就可以进行使用,一般检查时间为几分钟到十几分钟
加密工具需要 org.apache.commons.codec.binary.Hex 包
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
如果帮到你,请点个赞吧 O(∩_∩)O~