Я хотел бы сгенерировать пару ключей RSA, а затем написать функции для дешифрования с помощью ключа c publi и шифрования с использованием личного ключа.
В настоящий момент я генерирую свои ключи следующим образом
from cryptography.hazmat.primitives import serialization as crypto_serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.backends import default_backend as crypto_default_backend
key = rsa.generate_private_key(
backend=crypto_default_backend(),
public_exponent=65537,
key_size=2048
)
private_key = key.private_bytes(
crypto_serialization.Encoding.PEM,
crypto_serialization.PrivateFormat.PKCS8,
crypto_serialization.NoEncryption())
public_key = key.public_key().public_bytes(
crypto_serialization.Encoding.OpenSSH,
crypto_serialization.PublicFormat.OpenSSH
)
Затем я следовал документации по криптографии для шифрования с помощью RSA, там говорится:
message = b"encrypted data"
ciphertext = private_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
Я заменил public_key на private_key.
И расшифровал
plaintext = public_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
Здесь я заменил private_key на public_key.
Однако, выполнение зашифрованной части выдает мне сообщение об ошибке «AttributeError: объект bytes» не имеет атрибута «encrypt» ».
Как можно Я это исправлю?