import pickle
import hashlib
import uuid
def ask_pass():
username = input("Please create your username: ")
password = input("Please create your password: ")
salt = uuid.uuid4().hex
hash_code = hashlib.sha256(salt.encode() + password.encode())
dict = {username: {'SALT': salt,
'HASH': hash_code.hexdigest()
}
}
input_user=open("file.txt", "wb")
pickle.dump(dict, input_user)
我想向file.txt中添加多个用户,但是每次创建新的用户名和密码时,我的代码都会删除存储的file.txt中的先前用户名和密码。要使每个用户信息都将其存储在file.txt中,需要进行哪些更改?现有用户如何更改之前创建的密码?
答案 0 :(得分:0)
您每次保存文件时都会覆盖它,从而丢失了先前的信息。
您需要检查它是否存在,如果是这种情况,请打开它,阅读并添加新密钥,如果不存在,则创建一个新密钥。检查下面的代码。
此外,您应该谨慎使用open
(可以使用with
或close
,如here所述)。
import os
import pickle
import hashlib
import uuid
def ask_pass():
if os.path.isfile("file.txt"):
with open("file.txt", "rb") as fp:
dict = pickle.load(fp)
else:
dict = {}
username = input("Please create your username: ")
password = input("Please create your password: ")
salt = uuid.uuid4().hex
hash_code = hashlib.sha256(salt.encode() + password.encode())
dict[username] ={'SALT': salt,
'HASH': hash_code.hexdigest()
}
with open("file.txt", "wb") as fp:
pickle.dump(dict, fp)