我有这个简单的md5加密,但它似乎没有工作,当我检查我的数据库时,我输入的密码文本框中没有任何改变。
这是我的代码:
Dim strText As String = MetroTextBox6.Text
Dim bytHashedData As Byte()
Dim encoder As New UTF8Encoding()
Dim md5Hasher As New MD5CryptoServiceProvider
Using con = new MySqlConnection("server = localhost; user id = root; database = db; password = root")
Using cmd = con.CreateCommand()
con.Open()
Dim sqlQuery As String = "INSERT INTO candidate(uname,pword) VALUES("@votes, @pword")
With cmd
.CommandText = sqlQuery
.Parameters.AddWithValue("@uname", TextBox4.Text)
.Parameters.AddWithValue("@pword, MetroTextBox6.Text)
.ExecuteNonQuery()
bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(strText))
End With
MsgBox("Record Inserted")
End Using
答案 0 :(得分:2)
那是因为你没有使用你为任何东西创建的哈希。为字符串创建哈希代码并不会将字符串更改为哈希代码(即使它确实如此,您仍然会在将字符串发送到数据库之后执行此操作)。
在数据库调用之前计算哈希码,并创建要放入字符串的哈希码的字符串表示:
bytHashedData = md5Hasher.ComputeHash(encoder.GetBytes(strText))
strText = Convert.ToBase64String(bytHashedData)
然后使用带有哈希码的字符串而不是文本框中的字符串:
.Parameters.AddWithValue("@pword, strText)