Загрузка данных


import sqlite3
import hashlib
import secrets
from getpass import getpass

db = sqlite3.connect("users.db")

db.execute("""
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY,
        login TEXT NOT NULL UNIQUE,
        password_hash TEXT NOT NULL,
        salt TEXT NOT NULL
    )
""")
db.commit()

print("Регистрация")
login = input("Логин: ").strip()
password = getpass("Пароль: ")
repeat = getpass("Повторите пароль: ")

if not 3 <= len(login) <= 30:
    print("Логин должен содержать от 3 до 30 символов.")
elif len(password) < 8:
    print("Пароль должен содержать минимум 8 символов.")
elif password != repeat:
    print("Пароли не совпадают.")
else:
    salt = secrets.token_bytes(16)
    password_hash = hashlib.pbkdf2_hmac(
        "sha256", password.encode(), salt, 600000
    )

    try:
        db.execute(
            "INSERT INTO users (login, password_hash, salt) VALUES (?, ?, ?)",
            (login, password_hash.hex(), salt.hex())
        )
        db.commit()
        print("Регистрация завершена.")
    except sqlite3.IntegrityError:
        print("Этот логин уже занят.")

db.close()