用java在不同操作系统做 MD5 值不相同吗

如上,为什么我的一段字符串,在windows和unix上会是两个不同的值
补充:
编码
public static String md5(byte[] s){
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd','e', 'f' };
try{
byte[] strTemp = s;
MessageDigest mdTemp = MessageDigest.getInstance("MD5");
mdTemp.update(strTemp);
byte[] md = mdTemp.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){
return null;
}
}
要转换的字符:
String str = "中华人民共和国";
System.out.println(md5(str.getBytes()));
windows结果
025fceab9418be86066b60a71bc71485
unix结果:
0d8f3b469fe4d1f87d5ddc2ed5b25a79
谁能告诉我哪个是对的,有没可能和字符串编

MD5只是一个特殊的算法,它跟操作系统是没关系的。MD5本来就不用去管它 的结果的,你只要去判断新的字符串通过MD5之后结果是否相同,若相同,前后的字符串就是同一个,若不用,字符串就不一样呗,它的目的是为了防止解密的。你要知道它的结果干嘛呢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-24
应该是一样的,我们开发的项目是在windows上开发的,项目是部署到linux的,用户密码是用MD5加密的,如果不一样,问题还真大了
第2个回答  2011-03-24
str.getBytes("gb2312"),应该是系统编码的问题,
0d8f3b469fe4d1f87d5ddc2ed5b25a79 是正确的
第3个回答  2011-03-24
字符集编码不同本回答被提问者采纳
第4个回答  2011-03-24
除非算法不一样,否则值怎么会不一样。