金山云签名v2-java

基于1.8  、springboot

金山云官方文档 请求签名-文档中心-金山云

可视化工具,可对比签名KS3可视化签名工具-文档中心-金山云

 @Api("1.0.0")
    @PostMapping(value = "/p/k3/getSignV2")
    public String getK3SignV2(
            @NotNull(message = "HTTPVerb不能为空") String HTTPVerb,
            @NotNull(message = "ContentMD5不能为空") String ContentMD5,
            @NotNull(message = "ContentType不能为空") String ContentType,
            @NotNull(message = "date不能为空") String date,
            @NotNull(message = "CanonicalizedKssHeaders不能为空") String CanonicalizedKssHeaders,
            @NotNull(message = "CanonicalizedResource不能为空") String CanonicalizedResource
    ) throws UnsupportedEncodingException {

        HTTPVerb = HTTPVerb + "\n";
        ContentMD5 = ContentMD5 + "\n";
        ContentType = ContentType + "\n";
        date = date + "\n";
        if (!CanonicalizedKssHeaders.isEmpty()) {
            CanonicalizedKssHeaders = CanonicalizedKssHeaders + "\n";
        }

        String StringToSign = HTTPVerb + ContentMD5 + ContentType + date + CanonicalizedKssHeaders + CanonicalizedResource;
        logger.info("HTTPVerb:" + HTTPVerb);
        logger.info("ContentMD5:" + ContentMD5);
        logger.info("ContentType:" + ContentType);
        logger.info("date:" + date);
        logger.info("CanonicalizedKssHeaders:" + CanonicalizedKssHeaders);
        logger.info("CanonicalizedResource:" + CanonicalizedResource);

        String fieldvalue_utf8 = new String(StringToSign.getBytes("ISO-8859-1"), "UTF-8");
        String Signature       = Base64.getEncoder().encodeToString(genHMAC(fieldvalue_utf8, ks3VideoSk));
        String Authorization   = "KSS " + ks3VideoAk + ":" + Signature;
        return ResultBody.success(Authorization).toString();
    }

public static byte[] genHMAC(String data, String key) {
        byte[] result = null;
        try {
            //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
            SecretKeySpec signinKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM);
            //生成一个指定 Mac 算法 的 Mac 对象
            Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM);
            //用给定密钥初始化 Mac 对象
            mac.init(signinKey);
            //完成 Mac 操作
            byte[] rawHmac = mac.doFinal(data.getBytes());
            //result = Base64.encodeBase64(rawHmac);
            result = rawHmac;

        } catch (NoSuchAlgorithmException e) {
            System.err.println(e.getMessage());
        } catch (InvalidKeyException e) {
            System.err.println(e.getMessage());
        }
        if (null != result) {
            return result;
        } else {
            return null;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蜗牛慢慢向上爬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值