diff --git a/code/python/authorization.py b/code/python/authorization.py new file mode 100644 index 0000000..bbea666 --- /dev/null +++ b/code/python/authorization.py @@ -0,0 +1,89 @@ +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 ); \ No newline at end of file diff --git a/code/python/random_num.py b/code/python/random_num.py new file mode 100755 index 0000000..e9de19d --- /dev/null +++ b/code/python/random_num.py @@ -0,0 +1,45 @@ +import random +from random import random as r + +LIMIT = 1 +rand_int = random.randint(1, 100) +counter_fail = 0 + +def game(): + flag = True + #counter_fail = 0 + def wrapper(): + nonlocal число + число = число + 1 + print(число) + + + while flag: + число = int(input("Введите число:")) + + #print(dir(число)) + if ( rand_int > число ): + print("Угадываемое число больше!") + global counter_fail + counter_fail += 1 + + elif (rand_int < число): + print("Угадываемое число меньше!") + counter_fail += 1 + + else: + flag = False + print("Win!") + + if LIMIT == counter_fail: + print("Fatality!") + break + + return (2,3) + + + +w, r = game() +print(w) +print(r) +#print(game()) \ No newline at end of file