Шифрование RSA с использованием сгенерированной пары ключей - PullRequest
2 голосов
/ 18 июня 2020

Я с утра зациклился на этой проблеме. Я сгенерировал пару ключей для шифрования RSA с помощью s sh -keygen.

Шифрование работает нормально:

with open("keys.pub", "rb") as f:
    pubkey = f.read()

with open("keys", "rb") as f:
    prvkey = f.read()

from Crypto.PublicKey import RSA

from Crypto.Cipher import PKCS1_v1_5 as Cipher_PKCS1_v1_5

msg = "test"
print("raw msg->", msg)
keyPub = RSA.importKey(pubkey) # import the public key
cipher = Cipher_PKCS1_v1_5.new(keyPub)
cipher_text = cipher.encrypt(msg.encode()) # now we have the cipher
print("cipher text->", cipher_text)

Однако при расшифровке я получаю ошибку:

keyPriv = RSA.importKey(prvkey) # import the private key
cipher = Cipher_PKCS1_v1_5.new(keyPriv)
decrypt_text = cipher.decrypt(cipher_text, None).decode()
print("decrypted msg->", decrypt_text)
assert msg == decrypt_text # check that
print("test passed")

ValueError: формат ключа RSA не поддерживается

Я использую PyCrypto 2.6.1. Любая помощь будет принята с благодарностью. Я не могу прикрепить ключи из-за ошибки сервера.

1 Ответ

0 голосов
/ 25 июня 2020

После того, как вы введете RSA.importKey, правильно ли переменная keyPriv содержит ключ?

Кажется, что созданные вами пары ключей RSA несовместимы с pycrypto 2.6.1. Установка pycryptodome 3, который является форком pycrypto и находится в стадии активной разработки, должна решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...