Как добавить несколько имени пользователя и пароля в качестве словаря в файл паролей?

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)
Другие вопросы по тегам