import uuid import csv # Генерация случайного UUID (версия 4) import hashlib random_uuid = uuid.uuid4() DB = 'password_db.csv' class UserFoundException(Exception): pass class PasswordWrongException(Exception): pass def get_db_password(): """Читаем файл паролей в список""" users = [ ] with open(DB, newline='') as csvfile: spamreader = csv.reader(csvfile, delimiter=':') for row in spamreader: users.append(row) return users def checkUser(login: str) -> bool: """Проверяем пользователя в БД""" db = get_db_password() for row in db: if login == row[1]: return row # raise UserFoundException("Такой пользователь существует!") try: checkUser('user') except UserFoundException as e: print(e) def calculate_md5(data): """Вычисляет MD5-хеш для данных.""" md5_hash = hashlib.md5(data.encode('utf-8')).hexdigest() return md5_hash def login(username, passwd): user = checkUser(username) print(user[2]) passwd_md5 = calculate_md5(str(passwd)) print(passwd_md5) isRight = False if (user[2] == passwd_md5) else True if isRight: raise PasswordWrongException try: checkUser('user') except UserFoundException as e: print(e) except PasswordWrongException as e: print(e) login('oper', 123) exit(0) def logout(username): #todo: Сделать флаг выхода из системы pass def delete_user(username): #todo: Дописать удаление пользователя pass def registration(login, passwd, rep_passwd, phone, email): """Регистрация пользователей.""" if passwd == rep_passwd: passwd_md5 = calculate_md5(passwd) #print(f"MD5-хеш для '{passwd}': {passwd_md5}") str = f"{random_uuid}:{login}:{passwd_md5}:{phone}:{email}\n" with open("password_db.csv", "a+") as fd: fd.write(str) _login = input("login:") _passwd = input("passwd:") _rep_passwd = input("rep_passwd:") _phone = input("phone:") _email = input("email:") registration( _login, _passwd, _rep_passwd, _phone, _email );