0

私はリモートでMySQLデータベースに接続しましたJoomla! 1.5Visual Basic .NET 2010でMySqlConnectorを使用しているWebサイト。Visual Basic .NETでのJoomlaパスワード認証

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

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

Joomla DBでどのようにpasswords are encrypted(MD5ハッシュと "salt"を使用)の別の便利なJoomlaのフォーラムスレッドです。

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は、暗号化されたパスワードの組み合わせを使用して、非常に異なっていることである:ここ

は、コードの修正版です。何か案は?文字列= GETHASH(パスワード&パスワード&塩)

+0

うーんとして

薄暗いNewHashedPassword: –

+0

Joomlaのパスワードはデフォルトでは塩漬けされていますが、塩を使わないで手動で作成しても機能するはずです。他のユーザーを手動で作成しましたか? – udjamaflip

答えて

0

は、パスワード倍のようなものを使用すると、入力すべきユーザー・パスワードの正しいハッシュを取得します。私は管理者の資格情報を使ってこのコードをテストしていましたが、標準ユーザーを試してみたところ、うまくいきました! Joomlaの管理者向けに異なる暗号化方法がありますか?