使用散列来编码PIN并将其保存到数据库? PYTHON3
问题描述:
我目前正在掌握Python中的散列特性,用算法编码一个PIN码。在用户设置了PIN码后,我将其设置为变量'actualPIN'。我的代码如下:使用散列来编码PIN并将其保存到数据库? PYTHON3
def returnCard(name, ID, rollingBalance, actualPIN):
PIN = hashlib.sha256()
PIN.update(b"actualPIN")
data = (rollingBalance, actualPIN, ID)
print(rollingBalance)
with sqlite3.connect("ATM.db") as db:
cursor = db.cursor()
sql = 'update Atm set Balance=?, PIN=? where CustomerID=?'
cursor.execute(sql, data)
db.commit()
print("Thank you for using Norther Frock")
print("Returning card...")
time.sleep(1)
print("Have a nice day")
entryID()
一切正常,但用户输入的引脚保存在数据库中。我想要保存到数据库的是编码密码(显然是?)。任何人都可以解释我如何做到这一点?
答
您正在为数据库写入actualPIN
变量。相反,你的意思是写摘要:
data = (rollingBalance, PIN.digest(), ID)
# or data = (rollingBalance, PIN.hexdigest(), ID)
而且你可能想使用actualPIN
变量,而不是"actualPIN"
字符串在这里:
PIN.update(repr(actualPIN).encode('utf-8'))
我已经试过了,但现在当我使用的PIN被用户输入到程序中时,它被视为无效? –
@ D.Smith好的,如果我正确理解你的话,你的代码还有一个问题 - 查看更新后的答案。谢谢。 – alecxe
刚刚尝试过。将此作为响应: TypeError:支持所需缓冲区API的对象 –