Шифрование и расшифрование разнесено по разным файлам
This commit is contained in:
parent
03f517b843
commit
85ee7e2262
28
decrypt.py
Normal file
28
decrypt.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import base64
|
||||||
|
from cryptography.hazmat.backends import default_backend
|
||||||
|
from cryptography.hazmat.primitives import serialization, hashes
|
||||||
|
from cryptography.hazmat.primitives.asymmetric import padding
|
||||||
|
|
||||||
|
def load_keys_private(private_key_file):
|
||||||
|
with open(private_key_file, 'rb') as f:
|
||||||
|
private_key_data = f.read()
|
||||||
|
|
||||||
|
private_key = serialization.load_pem_private_key(
|
||||||
|
private_key_data,
|
||||||
|
password=None,
|
||||||
|
backend=default_backend()
|
||||||
|
)
|
||||||
|
return private_key
|
||||||
|
|
||||||
|
def decrypt_message(encrypted_message, private_key_file):
|
||||||
|
private_key = load_keys_private(private_key_file)
|
||||||
|
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()
|
29
encrypt.py
Normal file
29
encrypt.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import base64
|
||||||
|
from cryptography.hazmat.backends import default_backend
|
||||||
|
from cryptography.hazmat.primitives import serialization, hashes
|
||||||
|
from cryptography.hazmat.primitives.asymmetric import padding
|
||||||
|
|
||||||
|
|
||||||
|
def load_keys_public(public_key_file):
|
||||||
|
with open(public_key_file, 'rb') as f:
|
||||||
|
public_key_data = f.read()
|
||||||
|
|
||||||
|
public_key = serialization.load_pem_public_key(
|
||||||
|
public_key_data,
|
||||||
|
backend=default_backend()
|
||||||
|
)
|
||||||
|
return public_key
|
||||||
|
|
||||||
|
|
||||||
|
def encrypt_message(message, public_key_file):
|
||||||
|
public_key = load_keys_public(public_key_file)
|
||||||
|
encrypted = public_key.encrypt(
|
||||||
|
message.encode(),
|
||||||
|
padding.OAEP(
|
||||||
|
mgf=padding.MGF1(algorithm=hashes.SHA256()),
|
||||||
|
algorithm=hashes.SHA256(),
|
||||||
|
label=None
|
||||||
|
)
|
||||||
|
)
|
||||||
|
return base64.b64encode(encrypted).decode('utf-8')
|
||||||
|
|
65
main.py
65
main.py
@ -1,8 +1,9 @@
|
|||||||
import os
|
import os
|
||||||
import base64
|
|
||||||
from cryptography.hazmat.backends import default_backend
|
from cryptography.hazmat.backends import default_backend
|
||||||
from cryptography.hazmat.primitives import serialization, hashes
|
from cryptography.hazmat.primitives import serialization
|
||||||
from cryptography.hazmat.primitives.asymmetric import rsa, padding
|
from cryptography.hazmat.primitives.asymmetric import rsa
|
||||||
|
from encrypt import encrypt_message
|
||||||
|
from decrypt import decrypt_message
|
||||||
|
|
||||||
KEYS_DIR = 'keys'
|
KEYS_DIR = 'keys'
|
||||||
PRIVATE_KEY_FILE = f'{KEYS_DIR}/private-key.pem'
|
PRIVATE_KEY_FILE = f'{KEYS_DIR}/private-key.pem'
|
||||||
@ -39,60 +40,6 @@ def save_keys(private_key, public_key):
|
|||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
def load_keys_private():
|
|
||||||
# Загрузка закрытого ключа
|
|
||||||
with open(PRIVATE_KEY_FILE, 'rb') as f:
|
|
||||||
private_key_data = f.read()
|
|
||||||
|
|
||||||
private_key = serialization.load_pem_private_key(
|
|
||||||
private_key_data,
|
|
||||||
password=None,
|
|
||||||
backend=default_backend()
|
|
||||||
)
|
|
||||||
|
|
||||||
return private_key
|
|
||||||
|
|
||||||
|
|
||||||
def load_keys_public():
|
|
||||||
# Загрузка открытого ключа
|
|
||||||
with open(PUBLIC_KEY_FILE, 'rb') as f:
|
|
||||||
public_key_data = f.read()
|
|
||||||
|
|
||||||
public_key = serialization.load_pem_public_key(
|
|
||||||
public_key_data,
|
|
||||||
backend=default_backend()
|
|
||||||
)
|
|
||||||
|
|
||||||
return public_key
|
|
||||||
|
|
||||||
|
|
||||||
def encrypt_message(message):
|
|
||||||
public_key = load_keys_public()
|
|
||||||
encrypted = public_key.encrypt(
|
|
||||||
message.encode(),
|
|
||||||
padding.OAEP(
|
|
||||||
mgf=padding.MGF1(algorithm=hashes.SHA256()),
|
|
||||||
algorithm=hashes.SHA256(),
|
|
||||||
label=None
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return base64.b64encode(encrypted).decode('utf-8')
|
|
||||||
|
|
||||||
|
|
||||||
def decrypt_message(encrypted_message):
|
|
||||||
private_key = load_keys_private()
|
|
||||||
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()
|
|
||||||
|
|
||||||
|
|
||||||
# Запрос выбора действия
|
# Запрос выбора действия
|
||||||
action = input("Хотите сгенерировать новые ключи (1) или использовать существующие (2)? ")
|
action = input("Хотите сгенерировать новые ключи (1) или использовать существующие (2)? ")
|
||||||
|
|
||||||
@ -111,9 +58,9 @@ elif action == '2':
|
|||||||
|
|
||||||
# Шифрование сообщения
|
# Шифрование сообщения
|
||||||
message = "Это лицензионный ключ."
|
message = "Это лицензионный ключ."
|
||||||
encrypted_message = encrypt_message(message)
|
encrypted_message = encrypt_message(message, PUBLIC_KEY_FILE)
|
||||||
print("Зашифрованное сообщение (Base64):", encrypted_message)
|
print("Зашифрованное сообщение (Base64):", encrypted_message)
|
||||||
|
|
||||||
# Дешифрование сообщения
|
# Дешифрование сообщения
|
||||||
decrypted_message = decrypt_message(encrypted_message)
|
decrypted_message = decrypt_message(encrypted_message, PRIVATE_KEY_FILE)
|
||||||
print("Расшифрованное сообщение:", decrypted_message)
|
print("Расшифрованное сообщение:", decrypted_message)
|
||||||
|
Loading…
Reference in New Issue
Block a user