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()