擅长:python、mysql、java
<p>错误信息“长度不正确的密文”告诉了我们所有人。也就是说,
密码文本超出了可以计算的限制长度(密钥长度,
1024.2048..)/8。为了解决这个问题,您可以分离密码文本并解密
它们在一个循环中,然后集合所有解密的字节字符串。我在Python 3.6中的代码供参考:</p>
<pre><code># 1024/8
default_length = 128
encrypt_str = str(data["content"])
sign_str = str(data["sign"])
try:
rsa_private_key = RSA.importKey(private_key)
encrypt_byte = base64.b64decode(encrypt_str.encode())
length = len(encrypt_byte)
cipher = PKCS115_Cipher(rsa_private_key)
if length < default_length:
decrypt_byte = cipher.decrypt(encrypt_byte, 'failure')
else:
offset = 0
res = []
while length - offset > 0:
if length - offset > default_length:
res.append(cipher.decrypt(encrypt_byte[offset: offset +
default_length], 'failure'))
else:
res.append(cipher.decrypt(encrypt_byte[offset:], 'failure'))
offset += default_length
decrypt_byte = b''.join(res)
decrypted = decrypt_byte.decode()
</code></pre>