我是靠谱客的博主 悦耳冬瓜,最近开发中收集的这篇文章主要介绍微信小程序 java通过 rawData 和 session_key 生成 signature 签名,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

做微信小程序时,我们需要用户授权登录获取用户的相关数据,如果涉及到隐私数据,需要服务端通过rawData 和 session_key 生成 signature 签名,从而校验数据的准确性

public static String getsignature2(String rawData, String sessionKey) throws UnsupportedEncodingException, NoSuchAlgorithmException {
String stringASCII = rawData + sessionKey;
String signature2 = null;
try {
//指定sha1算法
MessageDigest digest = MessageDigest.getInstance("SHA-1");
digest.update(stringASCII.getBytes("UTF-8"));
//获取字节数组
byte messageDigest[] = digest.digest();
// 创建 Hex 字符串
StringBuffer hexString = new StringBuffer();
// 字节数组转换为 十六进制 数
for (int i = 0; i < messageDigest.length; i++) {
String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
if (shaHex.length() < 2) {
hexString.append(0);
}
hexString.append(shaHex);
signature2 = hexString.toString().toLowerCase();
}
} catch (NoSuchAlgorithmException | UnsupportedEncodingException e) {
throw e;
}
return signature2;
}

上述代码就实现了这个过程,其中有个坑,digest.update(stringASCII.getBytes("UTF-8")); 该行代码我们指定了编码格式,这在idea上面运行是没有问题的,因为idea的编码格式我们平时也是指定的utf-8,但是当项目部署到tomcat上后,会出现获取到的 signature 和前端传过来的 signature 不一致,导致数据检验不通过,原因就是tomcat默认的编码格式是GBK,我们需要手动更改tomcat的编码格式

打开tomcat里conf 下 的server.xml文件,在 下面图中的位置添加 URIEncoding="UTF-8" 编码格式即可

最后

以上就是悦耳冬瓜为你收集整理的微信小程序 java通过 rawData 和 session_key 生成 signature 签名的全部内容,希望文章能够帮你解决微信小程序 java通过 rawData 和 session_key 生成 signature 签名所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部