日期:2014-05-20  浏览次数:20913 次

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