腾讯开放平台接口鉴权(计算签名)工具类 java版

腾讯开放平台 接口鉴权(签名)工具类 java版

用到了Hutool工具类

package top.seasmall.platform.core.config.nettyws.util;

import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.crypto.digest.MD5;

import java.util.Map;

/**
 * 腾讯开放平台相关工具类
 *
 * @author liming
 * @date 2020-02-04 20:58
 */
public class TencentAiSignUtil {

    /**
     * <a href="https://ai.qq.com/doc/auth.shtml">获取签名</a><br>
     * <p>
     * 签名算法<br>
     * 1. 计算步骤<br>
     * 用于计算签名的参数在不同接口之间会有差异,但算法过程固定如下4个步骤。<br>
     * <p>
     * 将<key, value>请求参数对按key进行字典升序排序,得到有序的参数对列表N<br>
     * 将列表N中的参数对按URL键值对的格式拼接成字符串,得到字符串T(如:key1=value1&key2=value2),URL键值拼接过程value部分需要URL编码,URL编码算法用大写字母,例如%E8,而不是小写%e8<br>
     * 将应用密钥以app_key为键名,组成URL键值拼接到字符串T末尾,得到字符串S(如:key1=value1&key2=value2&app_key=密钥)<br>
     * 对字符串S进行MD5运算,将得到的MD5值所有字符转换成大写,得到接口请求签名<br>
     * 2. 注意事项<br>
     * 不同接口要求的参数对不一样,计算签名使用的参数对也不一样<br>
     * 参数名区分大小写,参数值为空不参与签名<br>
     * URL键值拼接过程value部分需要URL编码<br>
     * 签名有效期5分钟,需要请求接口时刻实时计算签名信息<br>
     * 更多注意事项,请查看<a href="https://ai.qq.com/doc/faq.shtml">常见问题</a>
     *
     * @param map 待签名参数列表,有序({@link java.util.LinkedHashMap} 或 {@link java.util.TreeMap}),根据规则会忽略空值
     * @return 签名字符串
     */
    public static String getReqSign(Map<String, Object> map, String appKey) {
        StringBuffer sb = new StringBuffer();
        map.forEach((k, v) -> {
            if (v != null && StrUtil.isNotBlank(String.valueOf(v))) {
                sb.append(k + "=" + URLUtil.encodeAll(String.valueOf(v)).toUpperCase()).append("&");
            }
        });
        sb.append("app_key=" + appKey);
        String sign = MD5.create().digestHex(sb.toString()).toUpperCase();
//        System.out.println("生成签名 " + sign);
        return sign;
    }

}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值