ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

服务签名验证使用

2022-06-16 11:00:10  阅读:156  来源: 互联网

标签:服务 String 验证 SecretKeySpec 签名 key new sha256 HMAC


(1)headers中要含有appId、sign、ts

header部分参数 备注
appId 向crm团队申请appId和secretKey
sign

sign由appId+secretKey+ts+参数顺序化字符串拼接成源串signOrigin,源串通过

ApiSecuritySHA.sha256(secretKey,signOrigin)进行加密得到sign

ts 时间戳,单位秒


(2)ApiSecuritySHA.sha256加密算法

import java.nio.charset.StandardCharsets;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class ApiSecuritySHA {
    private static final String HMAC_SHA1_ALGORITHM = "HmacSHA1";
    private static final String HMAC_SHA256_ALGORITHM = "HmacSHA256";

    public ApiSecuritySHA() {
    }

    public static String sha256(String key, String msg) {
        try {
            Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
            SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
            sha256_HMAC.init(secret_key);
            byte[] array = sha256_HMAC.doFinal(msg.getBytes());
            StringBuilder sb = new StringBuilder();
            byte[] var6 = array;
            int var7 = array.length;

            for(int var8 = 0; var8 < var7; ++var8) {
                byte item = var6[var8];
                sb.append(Integer.toHexString(item & 255 | 256), 1, 3);
            }

            return sb.toString().toUpperCase();
        } catch (Exception var10) {
            throw new RuntimeException(var10);
        }
    }

    public static String sha1(String key, String data) {
        try {
            SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(StandardCharsets.UTF_8), "HmacSHA1");
            Mac sha1_HMAC = Mac.getInstance("HmacSHA1");
            sha1_HMAC.init(secret_key);
            byte[] array = sha1_HMAC.doFinal(data.getBytes());
            String hash = Base64.encodeBase64String(array);
            return hash;
        } catch (Exception var6) {
            throw new RuntimeException(var6);
        }
    }
}

 

标签:服务,String,验证,SecretKeySpec,签名,key,new,sha256,HMAC
来源: https://www.cnblogs.com/yaochunhui/p/16381198.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有