微信两种签名算法MD5和HMAC-SHA256
2024-10-19 03:24:11
在做微信接口开发的过程中, 有时候发现会提示签名校验失败, 一模一样的签名逻辑就是有些接口跑步通, 找了一圈发现挺坑的;
原来是有些接口的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
最新文章
- Deep Learning(深度学习)学习笔记整理
- Animation Play/Stop测试
- C# 平时碰见的问题【4】
- Android读取assets目录下的资源
- cocos2d-x如何截屏并保存图片
- HTML5 新元素、HTML5 Canvas
- Html5如何自学 只需这几步
- mybatis的动态增删改查
- python基础——继承实现的原理
- Leetcode_7_Reverse Integer
- Allow Only Ajax Requests For An Action In ASP.NET Core
- 【JVM.11】Java内存模型与线程
- java问题排查工具之一板斧jstack——使用 jstack 定位 java进程CPU过高的问题
- Python实现简单的网页抓取
- python selenium 模拟登陆百度账号
- centos7 部署LNMP
- poj1836 Alignment
- getContentLength() 指为 -1 的解决办法
- Python用于http/https接口自动化
- 聊一聊session
热门文章
- JS---DOM---part4 课程介绍 &; part3 复习
- vue &; nodejs jwt 的基于token身份验证
- 15. Go 语言“避坑”与技巧
- 深入了解angularjs中的$digest与$apply方法,从区别聊到使用优化
- React中refs持久化
- Spring Boot 静态资源能加载css 不能加载js
- SpringBoot";热";部署解决方案
- Java生鲜电商平台-生鲜电商中商品类目、属性、品牌、单位架构设计与实战
- [转]VB.NET DataTable Select Function
- mongo shell 通过返回信息定位错误点