`我想用.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加密。
任何帮助表示感谢。
答案 0 :(得分:3)
您可能希望逐个字节地比较两种摘要方法的输入。这是来自VB.net的input
和来自Java的UTF8bytes
。最有可能的是它们会有所不同(例如,可能是VB.net的某些编码细节)。另外,你如何比较结果?
答案 1 :(得分:1)
最后我找到了答案。我刚刚将Md5哈希转换为BigInteger,然后转换为字节数组。现在,当我将其作为DES算法的关键字传递时,我得到了我想要的输出。