事件背景:
本人用两个开发工具开发项目,在某一次中,使用了eclipse调用idea中的项目(两个工具都是把项目部署到tomcat中的),突然就报错了。签名一直过不了。最后跟踪代码发现问题出现在md5加密上。
各家用的md5加密都不一致。最后发现inbuf.getBytes(“utf-8”) 这句代码,没修改之前是inbuf.getBytes();所以在tomcat下和单独的main测试出来的加密串是不正常的(在有中文的情况下)
~~跟踪了下,发现在tomcat下,getBytes(),eclipse按utf-8编码,而在idea中,按gbk编码。所以指定为固定的utf-8. 就对了
所以以后再遇到类似的怪异问题。先查找默认获取的编码是什么。
ok,困扰了很久的问题。终于解决了
private String getMD5ofStr(String inbuf) {
if (inbuf == null) {
inbuf = "";
}
md5Init();
try {
md5Update(inbuf.getBytes("utf-8"), inbuf.length());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
md5Final();
digestHexStr = "";
for (int i = 0; i < 16; i++) {
digestHexStr += byte2hex(digest[i]);
}
return digestHexStr;
}