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进制字符打印出来,应该就一样了。