Модули : Crypto
Скрипт ассиметричного шифрования, на каждом запуске генерирует новую пару ключей, шифрует сообщение, дешифрует и проводит валидацию, отлично подойдет для шифрования важных данных между двумя и более точками, также выводит сериализованную версию приватного ключа
Скрипт ассиметричного шифрования, на каждом запуске генерирует новую пару ключей, шифрует сообщение, дешифрует и проводит валидацию, отлично подойдет для шифрования важных данных между двумя и более точками, также выводит сериализованную версию приватного ключа
Python:
from Crypto.PublicKey import RSA
from Crypto.Signature import pkcs1_15
from Crypto.Hash import SHA512
def generate_keypair():
key = RSA.generate(2048)
private_key = key.export_key()
public_key = key.publickey().export_key()
return private_key, public_key
def sign_data(data, private_key):
key = RSA.import_key(private_key)
h = SHA512.new(data.encode('utf-8'))
return pkcs1_15.new(key).sign(h)
def verify_signature(data, signature, public_key):
key = RSA.import_key(public_key)
h = SHA512.new(data.encode('utf-8'))
try:
pkcs1_15.new(key).verify(h, signature)
return True
except (ValueError, TypeError):
return False
def serialize_private_key(private_key):
# Конвертируем приватный ключ в строку
return private_key.decode()
def deserialize_private_key(serialized_private_key):
# Конвертируем строку в приватный ключ
return serialized_private_key.encode()
# Пример использования
private_key, public_key = generate_keypair()
data = "Hello, world!"
signature = sign_data(data, private_key)
is_valid = verify_signature(data, signature, public_key)
print(f"Приватный ключ: {private_key}")
print(f"Публичный ключ: {public_key}")
print(f"Данные: {data}")
print(f"Зашифрованные данные: {signature}")
print(f"Подпись верна: {'Да' if is_valid else 'Нет'}")
print(f'Сериализованный приватный ключ: {serialize_private_key(private_key)}')