【发布时间】:2019-04-14 16:05:35
【问题描述】:
Function MD5Hash(ByVal values As String) As Byte()
Return MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(values))
End Function
Function Encrypt(ByVal Stringinput As String, ByVal key As String) As String
des.Key = MD5Hash(key)
des.Mode = CipherMode.ECB
Dim buffer As Byte() = ASCIIEncoding.ASCII.GetBytes(Stringinput)
Return Convert.ToBase64String(des.CreateEncryptor().TransformFinalBlock(buffer, 0, buffer.Length))
End Function
Private Sub btnSignup_Click(sender As Object, e As EventArgs) Handles btnSignup.Click
Using con As New SQLiteConnection(ConnectionString.ToString)
Dim query As String = "INSERT INTO LoginTB (user, password) VALUES (@username,@password)"
con.Open()
Using cmd As New SQLiteCommand(query, con)
cmd.Parameters.AddWithValue("@username", TxtBxUsername.Text)
cmd.Parameters.AddWithValue("@password", Encrypt(TxtBxPassword.Text, "abc"))
cmd.ExecuteNonQuery()
MsgBox("user created successfully")
con.Close()
End Using
End Using
End Sub
当我点击注册按钮时,错误出现在 MD5Hash 的值中。
System.NullReferenceException '对象引用未设置为对象的实例。'
我知道它被问了很多。但我找不到这个问题的解决方案。
【问题讨论】:
-
将
Encrypt和MD5Hash声明为Shared方法,即Shared Function MD5Hash(ByVal values As String) As Byte()等 -
在产生错误的代码行上设置断点并检查变量以查看哪个是
Nothing。初始化这个变量。 -
当我将其声明为共享时,它会显示
Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.
标签: vb.net