0

Joomlaの MySQL データベースにリモート接続することに成功しました! Visual Basic .NET 2010で MySqlConnector を使用する1.5 Web サイト。

現在、単純な形式で送信された値から、MySQL クエリから取得した値からユーザーのパスワードを認証しようとしています。

forums.joomla.org で"Joomla password MD5 & VB.NET MD5"というタイトルの便利なスレッドを見つけましたが、そこにあるコード スニペットは正しくないハッシュを生成します。

Joomla DB でのパスワードの暗号化方法(MD5 ハッシュと「ソルト」を使用)に関する別の便利な Joomla Forums スレッドを次に示します。

コードの修正版は次のとおりです。

Imports System.Text
Imports System.Security.Cryptography

...

Private Function JoomlaUserAuth(ByVal Password As String, ByVal EncryptedPassword As String) As Boolean

    'HashedPassword:Salt = value from Joomla DB

    Dim Values() As String = Split(EncryptedPassword, ":")
    Dim HashedPassword As String = Values(0)
    Dim Salt As String = Values(1)


    Dim NewHashedPassword As String = GetHash(Password & Salt)

    Return NewHashedPassword.Equals(HashedPassword)

End Function


Private Function GetHash(ByVal StringToHash As String) As String
    Dim md5 As New MD5CryptoServiceProvider()
    Dim encoder As New UTF7Encoding()
    Dim encStringBytes As [Byte]()

    encStringBytes = encoder.GetBytes(StringToHash)
    encStringBytes = md5.ComputeHash(encStringBytes)

    Dim strHex As String = String.Empty
    For Each B As Byte In encStringBytes
        strHex &= String.Format("{0:x2}", B)
    Next

    Return strHex

End Function

その結果、"NewHashedPassword" と "HashedPassword" は、正しいパスワードと DB 暗号化パスワードの組み合わせを使用すると、大きく異なります。何か案は?

4

1 に答える 1

0

ユーザーパスワードの正しいハッシュを取得するには、次のようにパスワードを2回入力する必要があります。

Dim NewHashedPassword As String = GetHash(Password&Password&Salt)

于 2011-10-24T13:14:18.153 に答える