2013-03-24 1 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 

Я использовал приведенный выше код для генерации md5 из 32 символов. Md5 для «1234567» дается как fcea920f7412b5da7be0cf42b8c93759, но я хочу, чтобы md5 хэш генерироваться d38f0d62daf542c5f10d8f29adacae17, как она порождается функцией md5() РНР.Эквивалентный хеш md5 для PHP и vb.NET 2008

Как создать эквивалентный md5-хэш в VB.NET?

+2

Почему, на ваш взгляд, это должно быть d38f0d62daf542c5f10d8f29adacae17? Кроме того, возможно, вам следует показать код для функции 'GetMd5Hash'. Обратите внимание, что, поскольку MD5 работает с байтовым входом, имеет смысл использовать кодировку текста. – driis

+0

Я знаю, что d38f0d62daf542c5f10d8f29adacae17 означает «1234567», потому что я создал это с помощью плагина для Counter Strike 1.6. Общая функция GetMd5Hash (ByVal md5Hash Как MD5, ByVal вход As String) В данных Строка Dim As Byte() = md5Hash.ComputeHash (Encoding.UTF8.GetBytes (вход)) Dim sBuilder As New StringBuilder() Dim я как Integer Для я = 0 Для data.length - 1 sBuilder.Append (данные (I) .ToString ("х2")) Далее я Возвращение sBuilder.ToString() End Function –

+0

и как плагин CS рассчитать? Как строка «1234567» преобразуется в байты? – driis

ответ

3

Кодирование является проблемой. Кодирование, которое вы используете в VB.NET для генерации хэша, отличается от того, что используется PHP. Вы должны использовать ту же кодировку, которую использует PHP при создании хеша из VB.NET. Это может быть как:

Dim BytesArray() As Byte 
BytesArray = System.Text.Encoding.UTF8.GetBytes("Your Input String) 
Смежные вопросы