Шифрование RSA в PYTHON. Как изначально генерировать публичный ключ, а на другом устройстве имея публичный генерировать приватный? Необходимо генерировать публичный ключ по нему шифровать информацию и после этого на другое устройство отправлять публичный ключ и по публичному ключу генерировать приватный и расшифровывать текст

21 Авг 2019 в 07:11
153 +1
0
Ответы
1

Для реализации шифрования RSA в Python и генерации публичного и приватного ключей необходимо использовать модуль cryptography.

Пример кода для генерации публичного и приватного ключей и шифрования/дешифрования данных с их использованием:

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives import hashes
# Генерация публичного и приватного ключей
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
backend=default_backend()
)
public_key = private_key.public_key()
# Сериализация и сохранение публичного ключа
public_key_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo
)
with open("public_key.pem", "wb") as f:
f.write(public_key_pem)
# Шифрование данных с использованием публичного ключа
message = b"Hello, world!"
encrypted_message = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# Дешифрование данных с использованием приватного ключа
decrypted_message = private_key.decrypt(
encrypted_message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(decrypted_message.decode())

Для передачи публичного ключа на другое устройство можно отправить файл public_key.pem, а на другом устройстве загрузить этот файл и преобразовать его обратно в объект публичного ключа:

# Загрузка публичного ключа с другого устройства
with open("public_key.pem", "rb") as f:
public_key_pem = f.read()
public_key = serialization.load_pem_public_key(
public_key_pem,
backend=default_backend()
)

С помощью этого публичного ключа можно зашифровать данные на отправляющем устройстве и передать зашифрованные данные на другое устройство для дешифрования с использованием приватного ключа.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 503 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир