我在解密时遇到问题可能是来自数据库的密码并发送到电子邮件恢复。这是加密密码的代码。
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
我该怎么做才能从数据库中获取密码来解密我的密码。
答案 0 :(得分:1)
MD5是散列,而不是加密。很大一部分原因是使用散列是因为它不可逆;也就是说,一旦哈希,你的密码永远不会被恢复。只有接受用户的密码并将其哈希值与您保存的密码进行比较,才能证明它是准确的。
也就是说,MD5是一种非常糟糕的算法,可以在大多数评论中注明。
电子邮件密码'恢复'是关于重置密码;一种方法是生成单独的时间限制散列以构造URL以发送给呈现密码重置形式的用户。如果哈希匹配,则使用该表单接受然后哈希(如果这是一个选项,请查看切换到bcrypt)并保存用户提供的新密码。