.net和java的不同MD5哈希值

时间:2011-09-26 05:49:09

标签: java vb.net encryption

`我想用.net编码我的字符串并将其传递给java程序。我正在使用相同的程序进行加密和解密。但java程序和.net程序返回不同的MD5哈希码。

以下是我的两个程序的代码:

VB.net

md5Provider = New MD5CryptoServiceProvider()
input = UTF8Encoding.UTF8.GetBytes(sSecurityKey)
oHash = oMd5CryptoServiceProvider.ComputeHash(input)

爪哇

MessageDigest m;
m = MessageDigest.getInstance("MD5");
byte[] UTF8bytes = key.getBytes("UTF8");
m.update(UTF8bytes,0,UTF8bytes.length);

编辑:使用vb.net计算的哈希是 {170,226,106,33,183,52,99,154,17,225,135,139,170,141,116,108}

我在java中获得的m.digest()是 {-44,29,-116,-39,-113,0,-78,4,-23,-128,9,-104,-20,-8,66,126}

问题是来自java的m.digest()和来自vb.net的oHash是不同的。所以我不能进一步使用DES加密。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:3)

您可能希望逐个字节地比较两种摘要方​​法的输入。这是来自VB.net的input和来自Java的UTF8bytes。最有可能的是它们会有所不同(例如,可能是VB.net的某些编码细节)。另外,你如何比较结果?

答案 1 :(得分:1)

最后我找到了答案。我刚刚将Md5哈希转换为BigInteger,然后转换为字节数组。现在,当我将其作为DES算法的关键字传递时,我得到了我想要的输出。