hmacsha256是对称算法吗_微信两种签名算法MD5和HMAC-SHA256

在进行微信接口开发时遇到签名校验失败的问题,原因在于不同接口的signType要求不同,有的需要MD5,有的需要HMAC-SHA256。虽然两者都是哈希算法,但生成的签名结果不一致。本文提供了HMAC-SHA256的加密代码示例,并分享了如何解决签名问题。
摘要由CSDN通过智能技术生成

在做微信接口开发的过程中,有时候发现会提示签名校验失败,一模一样的签名逻辑就是有些接口跑步通,找了一圈发现挺坑的;

原来是有些接口的signType签名类型有区别,有些接口signType要求是MD5,有的要求是HMAC-SHA256,其实这两种算法都是

hash算法的一种没有太大的差别,但是生成的签名结果会不一样;

下面附上HMAC-SHA256算法代码

packagecom.lh.micro.datasource.util;

importjavax.crypto.Mac;

importjavax.crypto.spec.SecretKeySpec;

publicclassHMACSHA256{

/**

*将加密后的字节数组转换成字符串

*

*@paramb字节数组

*@return字符串

*/

publicstaticStringbyteArrayToHexString(byte[]b){

StringBuilderhs=newStringBuilder();

Stringstmp;

for(intn=0;b!=null&&n

stmp=Integer.toHexString(b[n]&0XFF);

if(stmp.length()==1)

hs.append('0');

hs.append(stmp);

}

returnhs.toString().toLowerCase();

}

/**

*sha256_HMAC加密

*@parammessage消息

*@paramsecret秘钥

*@return加密后字符串

*/

publicstaticStringsha256_HMAC(Stringmessage,Stringsecret){

Stringhash="";

try{

Macsha256_HMAC=Mac.getInstance("HmacSHA256");

SecretKeySpecsecret_key=newSecretKeySpec(secret.getBytes(),"HmacSHA256");

sha256_HMAC.init(secret_key);

byte[]bytes=sha256_HMAC.doFinal(message.getBytes());

hash=byteArrayToHexString(bytes);

}catch(Exceptione){

System.out.println("ErrorHmacSHA256==========="+e.getMessage());

}

returnhash;

}

}

历史文章:

JAVA微信企业付款到零钱(十分钟搞定)

微信授权获取用户openId的方法和步骤

一个微信号同时支持多个环境网页授权

微信两种签名算法MD5和HMAC-SHA256

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值