У меня есть проблема, которая гласит: «Предположим, что ваши коэффициенты открытого ключа RSA равны p = 6323 и q = 2833, а открытый показатель e равен 31. Предположим, вам был отправлен Ciphertext 6627708. Напишите программу, которая принимает вышеуказанноепараметры в качестве входных данных и реализует функцию расшифровки RSA для восстановления открытого текста. "
При попытке расшифровать зашифрованный текст я получаю сообщение об ошибке:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-30-bb484f24f99a> in <module>
----> 1 cipher.decrypt((str(ciphertext)))
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/Crypto/Cipher/PKCS1_OAEP.py in decrypt(self, ciphertext)
165 # Step 1b and 1c
166 if len(ciphertext) != k or k<hLen+2:
--> 167 raise ValueError("Ciphertext with incorrect length.")
168 # Step 2a (O2SIP)
169 ct_int = bytes_to_long(ciphertext)
ValueError: Ciphertext with incorrect length.
Мой код в настоящее время выглядит так:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
n = 17913059
e = 31
p = 6323
q = 2833
d = 13861087
ciphertext = 6627708
key = RSA.construct(rsa_components=(n,e,d,p,q))
cipher = PKCS1_OAEP.new(key)
cipher.decrypt((str(ciphertext)))
Мне было интересно, если яна правильном пути или полностью сходя с рельсов. Я не слишком уверен, как исправить ошибку длины. Я думал, может быть, мне нужно набить, как в AES, но я не слишком уверен. Заранее спасибо за помощь!