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

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

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

下面附上HMAC-SHA256算法代码

package com.lh.micro.datasource.util;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec; public class HMACSHA256 { /**
* 将加密后的字节数组转换成字符串
*
* @param b 字节数组
* @return 字符串
*/
public static String byteArrayToHexString(byte[] b) {
StringBuilder hs = new StringBuilder();
String stmp;
for (int n = 0; b!=null && n < b.length; n++) {
stmp = Integer.toHexString(b[n] & 0XFF);
if (stmp.length() == 1)
hs.append('0');
hs.append(stmp);
}
return hs.toString().toLowerCase();
}
/**
* sha256_HMAC加密
* @param message 消息
* @param secret 秘钥
* @return 加密后字符串
*/
public static String sha256_HMAC(String message, String secret) {
String hash = "";
try {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
byte[] bytes = sha256_HMAC.doFinal(message.getBytes());
hash = byteArrayToHexString(bytes);
} catch (Exception e) {
System.out.println("Error HmacSHA256 ===========" + e.getMessage());
}
return hash;
} }

  

历史文章:
JAVA微信企业付款到零钱(十分钟搞定)
微信授权获取用户openId的方法和步骤
一个微信号同时支持多个环境网页授权
微信两种签名算法MD5和HMAC-SHA256

最新文章

  1. Deep Learning(深度学习)学习笔记整理
  2. Animation Play/Stop测试
  3. C# 平时碰见的问题【4】
  4. Android读取assets目录下的资源
  5. cocos2d-x如何截屏并保存图片
  6. HTML5 新元素、HTML5 Canvas
  7. Html5如何自学 只需这几步
  8. mybatis的动态增删改查
  9. python基础——继承实现的原理
  10. Leetcode_7_Reverse Integer
  11. Allow Only Ajax Requests For An Action In ASP.NET Core
  12. 【JVM.11】Java内存模型与线程
  13. java问题排查工具之一板斧jstack——使用 jstack 定位 java进程CPU过高的问题
  14. Python实现简单的网页抓取
  15. python selenium 模拟登陆百度账号
  16. centos7 部署LNMP
  17. poj1836 Alignment
  18. getContentLength() 指为 -1 的解决办法
  19. Python用于http/https接口自动化
  20. 聊一聊session

热门文章

  1. JS---DOM---part4 课程介绍 &amp; part3 复习
  2. vue &amp; nodejs jwt 的基于token身份验证
  3. 15. Go 语言“避坑”与技巧
  4. 深入了解angularjs中的$digest与$apply方法,从区别聊到使用优化
  5. React中refs持久化
  6. Spring Boot 静态资源能加载css 不能加载js
  7. SpringBoot&quot;热&quot;部署解决方案
  8. Java生鲜电商平台-生鲜电商中商品类目、属性、品牌、单位架构设计与实战
  9. [转]VB.NET DataTable Select Function
  10. mongo shell 通过返回信息定位错误点