2013-03-24 70 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)