我知道有很多关于PBKDF2和哈希的问题,但大多数人似乎都在谈论比特。也许这就是我需要了解的更多内容,但我希望我的问题更为直接。
注意:这是两个独立的程序(因此变量似乎重复,但不重复)。
第一个创建一个哈希密码并将其存储在数据库中......这样工作正常。
from pbkdf2 import crypt
import sqlite3
cemail = input("Email: ")
cpassword = input("Password: ")
pwhash = crypt(cpassword)
connection = sqlite3.connect('/Users/Air/Desktop/users.db')
cursor_v = connection.cursor()
cursor_v.execute("insert into user (cemail, cpassword) values (?,?)", (cemail, pwhash))
connection.commit()
cursor_v.close()
问题出在这里,我去检查数据库中的原始哈希密码。一旦哈希密码从第一个程序进入数据库,是吗?它是否永远消失(即无法在以后与其他东西进行比较,就像登录时的另一个密码)?
cemail = input("Login with Email: ")
cpassword = input("Login with Password: ")
pwhash = crypt(cpassword)
connection = sqlite3.connect('/Users/Air/Desktop/users.db')
cursor_v = connection.cursor()
cursor_v.execute("SELECT * FROM user WHERE cemail=? AND cpassword=?", (cemail,pwhash))
row = cursor_v.fetchone()
if pwhash == crypt(pwhash, cpassword):
print("Welcome")
else:
print("Invalid")
感谢任何帮助或指导。