【发布时间】:2022-01-24 18:01:31
【问题描述】:
我正在使用 python 3.9。
程序接受 3 个输入(username、password 和 email),然后使用 sha256 对密码变量进行哈希处理并将其返回为 result.username、password 和 email 被插入放入名为accounts 的表中。它提交更改并使用cur.fetchall() 打印出表格。
import hashlib
import sqlite3
con = sqlite3.connect('users/accounts.db')
print("Sign Up.")
username = input("Input your username : ")
password = input("Input your password : ")
email = input("Input your email: ")
result = hashlib.sha256(password.encode("utf-8"))
cur = con.cursor()
cur.execute("insert into accounts (username, password, email) values(?,?,?)",(username, str(result.digest()), email))
con.commit()
print(cur.fetchall())
con.close()
【问题讨论】:
-
没有什么可取的。您只能在
SELECT查询之后获取。 -
没有回答你的问题,但我希望这不是用于生产代码。散列密码(即使使用 SHA256)是一种糟糕的密码存储方式。至少,您需要在密码中添加“salt”。最佳情况下,您应该使用 pbkdf2。
-
我知道,显然这不适用于生产,而且我知道 salts 和 pbkdf2,但我还没有实现它们。这是一个测试代码。 @Fra
-
@Gurserit。好的。只是双重检查。这不是用于生产代码的,这并不完全明显,因为这几乎是 Adobe 在其密码被黑时使用的,也是为什么泄露如此严重的原因。