Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 如何从SQLite3数据库传递原始PBKDF2哈希_Hash_Sqlite_Pbkdf2 - Fatal编程技术网

Hash 如何从SQLite3数据库传递原始PBKDF2哈希

Hash 如何从SQLite3数据库传递原始PBKDF2哈希,hash,sqlite,pbkdf2,Hash,Sqlite,Pbkdf2,我知道有很多关于PBKDF2和散列的问题,但大多数问题似乎都是关于位的。也许这就是我需要更多了解的,但我希望我的问题有更直接的解决方法 注意:这是两个独立的程序(因此变量似乎会重复,但不会重复) 第一个创建哈希密码并将其存储在数据库中。。。这很好用 from pbkdf2 import crypt import sqlite3 cemail = input("Email: ") cpassword = input("Password: ") pwhash = crypt(cpassword)

我知道有很多关于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()
问题就在这里,我要检查数据库中的原始哈希密码。一旦哈希密码从第一个程序进入数据库,是吗?它是否永远消失了(即以后无法与其他密码进行比较,如登录期间的另一个密码)


感谢您的帮助或指导。

检查密码时正确使用
crypt
crypt(声称的、真实的散列)
;您根本不应该
crypt
尝试的密码。将您的过滤器更改为仅基于电子邮件进行过滤(应该是唯一的)。您好,上校三十二。谢谢你的帮助。对不起,请你详细说明一下,我在理解如何实现你写的东西时遇到了困难。您能给我一个代码示例吗?python-PDKDF2主页上有一个示例:Hi Colonel Three Two。我不想再打扰你了。我试着跟随你的脚步。我改变了过滤器,所以现在只有电子邮件,也删除了第一个密码(cpassword),但我仍然感到困惑,即使在阅读了网站。谢谢你的帮助。嗨,上校。我不得不多想想你说的话,我想我明白了!再次感谢你!
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")