admin管理员组文章数量:1613626
Linux与windows之间md5加密会引起不同
最近对接两个接口,都涉及到md5加密。
在本地调试成功以后,直接上服务器开测。
意外的情况发生了,其中一个接口居然反馈给我sign值校验错误。但另一个sign值校验过了。
如果说是md5加密算法弄错了,那应该两边都不可能通过。
我又在本地运行了一下,都传入相同的值。偏偏服务器的就是会出错。
僵持了五分钟,我发现一个接口需要md5加密的字段里涉及中文。而另一个不需要。
难道说是中文的原因?我把中文去掉,sign值校验通过。
所以你涉及md5加密的地方,应该加一个转化字节。并类型选择utf-8.
public static String string2MD5Daxie(String bs) {
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
//转化字节,并选择utf-8
byte[] btInput = bs.getBytes("UTF-8");
// 获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
// 使用指定的字节更新摘要
mdInst.update(btInput);
// 获得密文
byte[] md = mdInst.digest();
// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
} catch (Exception e) {
e.printStackTrace();
return null;
}}
大致如此
朗suke
发布了4 篇原创文章 · 获赞 1 · 访问量 1316
私信
关注
标签:加密,String,windows,byte0,str,Linux,sign,md5
来源: https://blog.csdn/qq_39025638/article/details/104198160
版权声明:本文标题:linux和windows下md5不一样,Linux与windows之间md5加密会引起不同 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1728655572a1168135.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论