【发布时间】:2015-06-07 10:06:03
【问题描述】:
我有一个字节数组,我想分别在 java 和 C# 中计算 MD5 哈希。但是,它们会产生截然不同的结果。
下面是我的 C# 代码:
byte[] input = { 90, 12, 200, 139, 85, 104, 9, 202, 0, 0, 0, 0, 28, 251, 54, 201, 233, 153, 79, 1 };
MD5 md5 = MD5.Create();
byte[] result = md5.ComputeHash(input);
它生成 md5 哈希:85,126,37,15,86,254,54,94,243,185,219,84,21,17,192,153,。
下面是java代码:
byte[] input = {90,12,-56,-117,85,104,9,-54,0,0,0,0,28,-5,54,-47,-23,-103,79,1};
byte[] md5 = MessageDigest.getInstance("MD5").digest(input);
它会导致:
-56,-74,-89,-76,9,35,-83,-89,-73,-39,17,83,24,18,-91,-62,
如您所见,结果完全不同。我知道 c# 使用无符号字节,java 使用有符号字节。没有办法让我相信结果是相同的。
提前致谢。
【问题讨论】: