读书人

MD5加密后的结果为何为负数?解决思路

发布时间: 2012-01-05 22:36:54 作者: rapoo

MD5加密后的结果为何为负数?
md5实现函数:
public static byte[] md5(byte[] source) {
byte[] result = new byte[16];
try {
MessageDigest md = MessageDigest.getInstance( "MD5 ");
md.reset();
md.update(source);
result = md.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}

return result;
}

以下是调用:
byte[] b = {1,2,3};
byte[] md5 = Tools.md5(b);
以下是查询结果:
for(int i = 0;i <md5.length;i++)
{
System.out.println(md5[i]);

}
发现结果中有很多负数.不知道什么原因?为何和我用.net得到的结果不同啊?(byte数组中正数是相同的,但.net得到的结果没有负数?)

[解决办法]
java中的byte是有符号的,而c#的byte是无符号的。
把两者的byte型都转为16进制字符打印出来,应该就一样了。

读书人网 >J2SE开发

热点推荐