因此,我尝试使用通过文本框输入的用户名和存储为字符串的密码来搜索数据库(用户将其密码输入文本框,并对其进行了一些加密操作,然后存储了加密的密码作为字符串;此字符串是我用来搜索数据库的字符串,因为数据库中存储了加密的密码)
该命令对于通过文本框输入的用户名字符串正常工作,但是当我直接使用派生的密码字符串时,该命令将无效。我认为以下代码行中的语法错误给您带来麻烦:
Dim cmd As OleDbCommand = New OleDbCommand
("SELECT * FROM UserInfo
WHERE [User ID] = '" & txtLoginID.Text & "'
AND [EncryptedPassword] = '" & EncPasswordString & "' ", con)
EncPasswordString是存储通过各种操作获取的加密密码的字符串。我需要将此字符串与数据库中的EncryptedPassword进行比较。谢谢!
这就是我用来获取EncPasswordSting的东西:
i = 0
While (PLength > 0)
charofP = sHex(i)
ascvalue = Strings.Asc(chartest)
decvalue = Convert.ToDecimal(ascvalue)
shiftdecvalue = decvalue + 1
asctochar = ChrW(shiftdecvalue)
emptychararray(i) = asc
i = i + 1
PLength = PLength - 1
End While
EncPasswordString = Convert.ToString(emptychararray)
偏离路线根本不起作用。如您所说,密码已加密。用您的话来说(“但是当我直接使用派生的密码字符串时,它是行不通的。”)您有两种选择来验证并使之生效:
Encrypt
在数据库中输入密码并与密码比较。Decrypt
检索后输入密码,并与输入的密码进行比较。请分享您SQL command text
在调试时拥有的内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句