在VB.NET FORM DATABASE中解密MD5

时间:2016-04-20 06:27:43

标签: vb.net encryption

我在解密时遇到问题可能是来自数据库的密码并发送到电子邮件恢复。这是加密密码的代码。

Dim des As New TripleDESCryptoServiceProvider
Dim md5 As New MD5CryptoServiceProvider

'we need to make hash function

Function md5hash(ByVal password)
    Return md5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(password))



End Function

'now we can create function by using this has

Function encrypt(ByVal strings, ByVal key)
    des.Key = md5hash(key)
    des.Mode = CipherMode.ECB

    Dim buffer = ASCIIEncoding.ASCII.GetBytes(strings)

    Return Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.length))

End Function

在这里它是如何加密的

    Dim cs As New Functions
    Dim strText As String = newpassword.Text
    Dim bytHashedData As Byte()
    Dim encoder As New UTF8Encoding()
    Dim md5Hasher As New MD5CryptoServiceProvider
    Dim md5 As New md5
    Dim data1 As String
    data1 = md5.encrypt(newpassword.Text, "This is key")
    Dim data2 As String
    data2 = md5.encrypt(oldpassword.Text, "This is key")


    If cs.checklogin(oldpassword.Text, newpassword.Text) = False Then
        If cs.checkusername(UserName.Text) = True Then
            If cs.checkpass(data2) = True Then
                If cs.changepass(data1, UserName.Text) = False Then
                    MessageBox.Show("Password changed successfully.")
                    bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(strText & newpassword.Text))
                    UserName.Text = ""
                    oldpassword.Text = ""
                    newpassword.Text = ""
                Else
                    MessageBox.Show("Something Went wrong!")
                End If
            Else
                MessageBox.Show("Old password is incorect!")
            End If
        Else
            MessageBox.Show("Username not found!")
        End If

        Else
            MessageBox.Show("We strictly comply completing all required fields.")
        End If
End Sub

我该怎么做才能从数据库中获取密码来解密我的密码。

1 个答案:

答案 0 :(得分:1)

MD5是散列,而不是加密。很大一部分原因是使用散列是因为它不可逆;也就是说,一旦哈希,你的密码永远不会被恢复。只有接受用户的密码并将其哈希值与您保存的密码进行比较,才能证明它是准确的。

也就是说,MD5是一种非常糟糕的算法,可以在大多数评论中注明。

电子邮件密码'恢复'是关于重置密码;一种方法是生成单独的时间限制散列以构造URL以发送给呈现密码重置形式的用户。如果哈希匹配,则使用该表单接受然后哈希(如果这是一个选项,请查看切换到bcrypt)并保存用户提供的新密码。