将参数根据ASCII码升序排序并使用sha56_Hmac加密然后拼接成url请求第三方接口最后解析

有时候在请求第三方接口的时候,需要将参数根据ASCII码排序并使用sha56_Hmac加密组合成url,本文将描述一下过程,并且给广大码农提供一个思路

public class Test {

    @Test
    public void getCoinInfo() {

        //TreeMap会根据key对应的ASCII码进行排序,默认:升序
        Map<String, Object> params = new TreeMap<>();

        params.put("参数一", 1);
        params.put("参数二", 2);        
        params.put("参数三", 3);

        //这时,就可以用urlParam去请求第三方接口了
        String urlParam = getUrlParam(params);

        System.out.println(result);
    }

    public static String getUrlParam(Map<String, Object> params) {
        StringBuilder result = new StringBuilder();
        if (params != null) {
            for (String key : params.keySet()) {
                Object value = params.get(key);
                //效果:参数一:1,参数二:2,
                result.append(key).append(":").append(value).append(",");
            }
            String tempString = result 
            try {
                //参数一:要加密的数据   参数二:用于生成消息摘要的HMAC变体的共享密钥   最后转换为大写
                String sign = sha256_HMAC(tempString, SECRET).toUpperCase();
                //将加密后的数据添加到参数后边
                result.append("sign").append(":").append(sign);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //这时,返回的字符串就是根据ASCII码排序并使用sha56_Hmac加密后的数据
        return result.toString();
    }

    /**
     * sha56_Hmac加密
     * @param message  要加密的数据
     * @param secret   用于生成消息摘要的HMAC变体的共享密钥
     * @return
     * @throws Exception
     */
    public static String sha256_HMAC(String message, String secret) throws Exception{
        Mac mac = Mac.getInstance(HmacSHA256);
        SecretKeySpec keySpec = new SecretKeySpec(secret.getBytes(), HmacSHA256);
        mac.init(keySpec);
        byte[] bs = mac.doFinal(message.getBytes());
        return byte2Hex(bs);
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值