七牛云 时间戳 防盗链

首先打开域名配置面板

找到访问控制,然后下面会有时间戳防盗链设置,点击修改配置

点击后会展示配置面板

① 选择开启 ② 选择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~

猜你喜欢

转载自blog.csdn.net/qq171563857/article/details/85331620