【问题标题】:Joomla Password Authentication in Visual Basic .NETVisual Basic .NET 中的 Joomla 密码验证
【发布时间】:2011-10-19 18:03:06
【问题描述】:

我已经成功地为我的 Joomla! 远程连接到 MySQL 数据库! 1.5 网站在 Visual Basic .NET 2010 中使用 MySqlConnector。

现在我正在尝试从以简单形式提交的值到从 MySQL 查询中检索到的值来验证用户的密码。

我在 forums.joomla.org 上找到了一个有用的帖子,标题为 "Joomla password MD5 & VB.NET MD5",但那里的代码 sn-ps 产生了不正确的哈希。

这里是另一个有用的 Joomla 论坛帖子,关于 passwords are encrypted(使用 MD5 哈希和“salt”)如何在 Joomla DB 中。

这里是修改后的代码:

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”使用正确的密码/数据库加密密码组合非常不同。有什么想法吗?

【问题讨论】:

  • 嗯。我正在使用管理员的凭据测试此代码,但是在尝试了标准用户之后,它起作用了! Joomla 中的管理员有不同的加密方法吗?
  • Joomla 密码默认是加盐的,如果你手动创建一个没有加盐的用户,它仍然可以工作。您是否手动创建了其他用户?

标签: vb.net joomla passwords mysql-connector password-encryption


【解决方案1】:

要获得用户密码的正确哈希值,您应该输入两次密码,例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2015-10-04
    • 2011-10-30
    相关资源
    最近更新 更多