Как добавить несколько имени пользователя и пароля в качестве словаря в файл паролей?
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, а также как существующие пользователи могут изменить свой пароль, созданный ранее?
1 ответ
Решение
Вы перезаписываете файл каждый раз, когда сохраняете его, теряя предыдущую информацию.
Вы должны проверить, что он существует, и, если это так, открыть его, прочитать его и добавить новый ключ к нему и, если он не существует, создать новый. Проверьте код ниже.
Кроме того, вы должны быть осторожны, используя open
(ты можешь использовать with
или же close
, как указано здесь).
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)