2013-08-06 160 views
0

对不起,如果这已被回答。我看了看,却找不到具体的东西。VB.net + mySQL + md5哈希建议

我在VB.NET共享一个登录使用IP板3.4.5一个互联网论坛上写一个程序。

我有密码部分的困难 - 论坛使用md5哈希与4字符盐。该文件表示它PHP如下:

$hash = md5(md5($salt) . md5($password)); 

我需要达到使用VB.NET相同的结果,会有人能够给我一个指针就如何实现这一目标?

+0

从哪里得到盐?它是存储在数据库字段中的随机盐 – Orangepill

+1

使用[本指南]可能需要为ipboard实施您自己的登录适配器(http://www.invisionpower.com/support/guides/_/advanced-and-developers/整合/登录模块-R42) – Orangepill

回答

0

虽然我并不熟悉盐应该如何工作,但我创建了一个函数,其中包含密码和盐,然后将它们用作输入来创建最终的哈希。

你需要这些:

Imports System.Security.Cryptography 
Imports System.Text 
Imports System.IO 

要运行此:

Private Function CreateMD5(password As String, salt As String) As String 
    Dim passwordBytes() As Byte = Encoding.UTF8.GetBytes(password) 
    Dim saltBytes() As Byte = Encoding.UTF8.GetBytes(salt) 
    Dim saltedPasswordHash As Byte() 

    Dim md5Hasher As MD5 = Security.Cryptography.MD5.Create() 
    Dim buffer As New MemoryStream 
    Dim writer As New StreamWriter(buffer) With {.AutoFlush = True} 

    Try 
     writer.Write(md5Hasher.ComputeHash(passwordBytes)) 
     writer.Write(md5Hasher.ComputeHash(saltBytes)) 
     buffer.Position = 0 
     saltedPasswordHash = md5Hasher.ComputeHash(buffer) 
    Finally 
     writer.Dispose() 
     buffer.Dispose() 
     md5Hasher.Dispose() 
    End Try 

    Return String.Concat(BitConverter.ToString(saltedPasswordHash).Split("-"c)) 
End Function 

用法示例:

Dim saltedHash As String = CreateMD5("password", "salt") 
Console.WriteLine(saltedHash) 

输出:

CDA7359AB6408E7F0088CAB68470D5FE