PHP和VB.NET之间的MD5哈希结果不符合预期

3

我已经尝试了大约4个小时,想让我的vb.NET MD5函数生成与PHP相同的哈希值。

这是我的vb.net函数:

Public Function MD5(ByVal input As String) As String
    Dim x As New System.Security.Cryptography.MD5CryptoServiceProvider()
    Dim bs As Byte() = System.Text.Encoding.UTF8.GetBytes(input)
    bs = x.ComputeHash(bs)
    Dim s As New System.Text.StringBuilder()
    For Each b As Byte In bs
        s.Append(b.ToString("x2").ToLower())
    Next
    Dim hash As String = s.ToString()
    Return hash
End Function

"A3f4yoJz" 的 vb.NET MD5 函数会产生以下结果:

77f366330b7d65d451a96d38009cf06b"

但PHP会产生以下结果:

5e9000c4f54e403484889df696151b9c

然而,某些字符串(例如“paSsword1”)的哈希运算完全正常。

有任何想法吗?我已经尝试了多种vb.net中的MD5方法。我无法更改PHP中的工作方式,因为我正在编写一个与商业应用程序接口的库 - 我只需要生成相同的哈希值!

谢谢,

汤姆


请仔细检查您的输入字符串值,确保它们没有任何尾随的“不可见”字符,例如换行符。 - Mark Baker
找到解决方法了,出问题的原因是输入末尾有几个空字节,我修改了代码来移除它们 :) - Tommykent1210
1个回答

1

我刚刚运行了你的代码,得到了5e9000c4f54e403484889df696151b9c,所以你的输入字符串必须不完全等于A3f4yoJz

更新:Mark对你的问题的评论可能是正确的方法。仔细检查输入字符串中的空格。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接