Python ValueError:长度不正确的密文
我的问题是: “假设您的RSA公钥因子为p=6323和q=2833,并且 公共指数e为31。假设您收到密文6627708。编写一个程序,将上述参数作为输入,并实现RSA解密函数以恢复明文。” 尝试解密密文时,我收到错误:Python ValueError:长度不正确的密文,python,rsa,pycryptodome,Python,Rsa,Pycryptodome,我的问题是: “假设您的RSA公钥因子为p=6323和q=2833,并且 公共指数e为31。假设您收到密文6627708。编写一个程序,将上述参数作为输入,并实现RSA解密函数以恢复明文。” 尝试解密密文时,我收到错误: --------------------------------------------------------------------------- ValueError Traceback (most recen
---------------------------------------------------------------------------
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.
我想知道的更多,所以我是否在正确的轨道上,或完全脱离轨道。我不太确定如何修正长度错误。我在想也许我需要像在AES中一样使用pad,但我不太确定。提前感谢您的帮助 如果您有
c
、d
和n
,则可以使用获取密文:
>>> pow(ciphertext, d, n)
205
这似乎是一个格式错误的消息(它们通常是十六进制或ASCII值),因此这可能只是一个示例问题
您的问题源于of,其中指出:
C:要解密的密文,长度为k的八位字节字符串,其中k=2hLen+2
其中:
hLen表示哈希函数输出的长度(以八位字节为单位)
因此,从技术上讲,您的密文太短,RSA无法解密。嘿,谢谢您的帮助。这只是一个简单的整数,我们想尝试使用RSA来解密,你知道这个错误或者如何修复它吗?@Dylaloo问题是因为其中一个FIP或RFC(我不记得是哪个)pycryptodome按照字母顺序。请参阅我的答案,了解如何解密您的密文几乎可以肯定您的明文没有填充,我怀疑您的讲师希望或期望您使用任何RSA库。
>>> pow(ciphertext, d, n)
205