如何使用 python 3 解密 SQLite 数据库中的项目
How to decrypt item in SQLite database using python 3
我正在尝试验证是否在我网站的密码输入框中输入了正确的密码。如果输入的密码与在用户名输入框中输入的 "usernick" 相对应的 SQLite table 中的密码匹配,则目标是 return true。
def check_login(db, usernick, password):
"""returns True if password matches stored"""
cursor = db.cursor()
cursor.execute("SELECT password FROM users WHERE nick='%s'" % usernick)
passcheck = cursor.fetchone()
print(usernick)
print(password)
print(passcheck)
if password == passcheck:
return True
else:
return False
我使用印刷品来查看我的代码哪里出错了。函数中输入了正确的用户名和密码,但 print(passcheck) 输出的是:
['48181acd22b3edaebc8a447868a7df7ce629920a']
我现在明白了,这是因为密码被解密了。如何解密密码?
你不知道。您对用户输入的密码进行加密,并检查它是否与数据库中的加密版本匹配。
但是,如果没有关于某个数据库最初是如何创建的任何详细信息,就无法进一步帮助您。
编辑
请记住,fetchone()
总是 returns 一个元组,即使您只选择了一个列。做 passcheck = cursor.fetchone()[0]
.
我正在尝试验证是否在我网站的密码输入框中输入了正确的密码。如果输入的密码与在用户名输入框中输入的 "usernick" 相对应的 SQLite table 中的密码匹配,则目标是 return true。
def check_login(db, usernick, password):
"""returns True if password matches stored"""
cursor = db.cursor()
cursor.execute("SELECT password FROM users WHERE nick='%s'" % usernick)
passcheck = cursor.fetchone()
print(usernick)
print(password)
print(passcheck)
if password == passcheck:
return True
else:
return False
我使用印刷品来查看我的代码哪里出错了。函数中输入了正确的用户名和密码,但 print(passcheck) 输出的是: ['48181acd22b3edaebc8a447868a7df7ce629920a']
我现在明白了,这是因为密码被解密了。如何解密密码?
你不知道。您对用户输入的密码进行加密,并检查它是否与数据库中的加密版本匹配。
但是,如果没有关于某个数据库最初是如何创建的任何详细信息,就无法进一步帮助您。
编辑
请记住,fetchone()
总是 returns 一个元组,即使您只选择了一个列。做 passcheck = cursor.fetchone()[0]
.