import hashlib
import datetime
# Функция для генерации временного ключа
def generate_temp_key(secret, validity_days):
# Получаем текущую дату и преобразуем её в строку
current_date =
datetime.datetime.now ().strftime('%Y-%m-%d')
# Генерируем ключ, используя секрет и текущую дату
key = hashlib.sha256(f"{secret}{current_date}".encode()).hexdigest()
expiry_date =
datetime.datetime.now () + datetime.timedelta(days=validity_days)
return key, expiry_date.strftime('%Y-%m-%d')
# Функция для проверки ключа
def check_key(input_key, secret, expiry_date):
# Получаем текущую дату
current_date =
datetime.datetime.now ().strftime('%Y-%m-%d')
# Проверяем, не истек ли ключ
if current_date > expiry_date:
return False
# Генерируем ключ на основании секрета и текущей даты
valid_key, _ = generate_temp_key(secret, 0) # Установим 0 дней, чтобы получить только ключ на текущую дату
# Сравниваем с введенным ключом
return input_key == valid_key
# Пример использования
secret = "my_secret_key"
validity_days = 7
# Генерируем временный ключ
key, expiry_date = generate_temp_key(secret, validity_days)
print(f"Generated Key: {key}, Expiry Date: {expiry_date}")
# Запрашиваем у пользователя ключ
user_input = input("Введите одноразовый ключ для использования программы: ")
# Проверяем введенный ключ
if check_key(user_input, secret, expiry_date):
print("Ключ действителен. Доступ к программе предоставлен.")
else:
print("Ключ недействителен или истек.")
Что-то типо:введите одноразовый ключ для использования программы.