commit 26eedff3bc0b68326f7a85743b0f0877191e0077 Author: stirelshka8_BigARM Date: Sat Mar 1 12:59:04 2025 +0300 INIT diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ef81b1e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.venv/ diff --git a/main.py b/main.py new file mode 100644 index 0000000..6b31855 --- /dev/null +++ b/main.py @@ -0,0 +1,52 @@ +import base64 +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import serialization, hashes +from cryptography.hazmat.primitives.asymmetric import rsa, padding + +# Функции для генерации ключей, шифрования и расшифрования + +def generate_keys(): + private_key = rsa.generate_private_key( + public_exponent=65537, + key_size=2048, + backend=default_backend() + ) + public_key = private_key.public_key() + return private_key, public_key + +def encrypt_message(message, public_key): + encrypted = public_key.encrypt( + message.encode(), + padding.OAEP( + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), + label=None + ) + ) + # Кодируем в Base64 для представления в виде строки + return base64.b64encode(encrypted).decode('utf-8') + +def decrypt_message(encrypted_message, private_key): + # Декодируем из Base64 обратно в байты + encrypted_bytes = base64.b64decode(encrypted_message) + decrypted = private_key.decrypt( + encrypted_bytes, + padding.OAEP( + mgf=padding.MGF1(algorithm=hashes.SHA256()), + algorithm=hashes.SHA256(), + label=None + ) + ) + return decrypted.decode() + +# Генерация ключей +private_key, public_key = generate_keys() + +# Шифрование сообщения +message = "Это лицензионный ключ." +encrypted_message = encrypt_message(message, public_key) +print("Зашифрованное сообщение (Base64):", encrypted_message) + +# Дешифрование сообщения +decrypted_message = decrypt_message(encrypted_message, private_key) +print("Расшифрованное сообщение:", decrypted_message)