2013-03-24 71 views
1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim source As String = TextBox1.Text 
    Using md5Hash As MD5 = MD5.Create() 
     Dim hash As String = GetMd5Hash(md5Hash, source) 
     TextBox2.Text = hash 
    End Using 
End Sub 

我用上面的代码生成了32个字符的md5。为“1234567”的MD5是作为 fcea920f7412b5da7be0cf42b8c93759但我想因为它是由PHP的MD5()函数生成要为d38f0d62daf542c5f10d8f29adacae17生成MD5哈希值。用于PHP和vb.NET 2008的等效md5散列

如何在VB.NET中生成等效的md5哈希值?

+2

你为什么认为它应该是d38f0d62daf542c5f10d8f29adacae17?另外,也许你应该显示你的'GetMd5Hash'函数的代码。请注意,由于MD5适用于字节输入,因此您使用的文本编码很重要。 – driis 2013-03-24 17:40:31

+0

我知道d38f0d62daf542c5f10d8f29adacae17的意思是“1234567”,因为我已经为Counter Strike 1.6创建了一个插件。 共享功能GetMd5Hash(BYVAL md5Hash如MD5,BYVAL输入作为字符串)作为字符串 昏暗数据作为字节()= md5Hash.ComputeHash(Encoding.UTF8.GetBytes(输入)) 昏暗sBuilder作为新的StringBuilder() 昏暗我作为整数 对于i = 0到data.Length - 1 sBuilder.Append(数据(i)的ToString( “×2”)) 下一I 返回sBuilder.ToString() 端功能 – 2013-03-24 19:14:41

+0

以及如何将CS插件计算它?字符串“1234567”如何转换为字节? – driis 2013-03-24 19:27:14

回答

3

编码是问题。在VB.NET中使用的编码生成哈希是不同于PHP使用的。您必须使用与PHP在使用VB.NET生成哈希时使用的编码相同的编码。它可能是这样的:

Dim BytesArray() As Byte 
BytesArray = System.Text.Encoding.UTF8.GetBytes("Your Input String)