我正在尝试使用公共密钥解密邮件:
我知道这不是标准,但就我而言,加密是通过私钥完成的,而解密是通过公钥进行的。服务器加密数据,然后将其发送给客户端。客户端具有公共密钥,并且可以从服务器解密数据。
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu8rtXhPxSojY7NyHiOlo
XkVCAwhCaMU7rZleDOxsXIqS4zzEkD87r2DujuCWD/6Fummxem0al8y4gD5M4b4O
K+m7qDJ5K4NCB8eW5D/DQ+dIa63sDroyrmJqtLMOKuWxZqYJXEM6vqDm1vKAZpBv
A04CX5zyN7O3G6rB2mVa2Io+OJXxNx/J7ebe20TE5w5zKqQR+LUs9tVYPrOKDmVj
7b8pv9hbSmK+t+x/Z7von2Fr6WfdqFW/VkD09Cu2r5yc2klyEcdIIDwN5krBpdN4
Gon/BkyD+t1lwmpZOUXvKzWyOPuHazEXcKaAe3PTzVDX5ubwOfiiUis87+ekpoHa
mwIDAQAB
-----END PUBLIC KEY-----
这是用于解密消息的python代码部分:
from Crypto.PublicKey import RSA
import json
import codecs
import base64
from base64 import b64decode
def read(response_json):
with open(response_json) as r:
data = json.load(r)
session = data["output"]["session"]
return session
def decrypt(session):
cert = open('publicKey\key.txt', "rb").read()
publicKey = RSA.importKey(cert)
decrypted_info = publicKey.decrypt(session)
return decrypted_info
不久,脚本会得到一个文件json,其中有一个名为“会话”的部分,该部分已加密并正确读取,我需要通过上面发布的公钥进行解密,但是当我尝试解密时,出现以下错误:
Traceback (most recent call last):
File ".\decripting.py", line 22, in <module>
print(r.decrypt(session))
File "C:\Users\Fabio\...", line 16, in decrypt
decrypted_info = publicKey.decrypt(session)
File "C:\Python27\lib\site-packages\Crypto\PublicKey\RSA.py", line 174, in decrypt
return pubkey.pubkey.decrypt(self, ciphertext)
File "C:\Python27\lib\site-packages\Crypto\PublicKey\pubkey.py", line 93, in decrypt
plaintext=self._decrypt(ciphertext)
File "C:\Python27\lib\site-packages\Crypto\PublicKey\RSA.py", line 237, in _decrypt
cp = self.key._blind(ciphertext, r)
File "C:\Python27\lib\site-packages\Crypto\PublicKey\_slowmath.py", line 43, in _blind
return m * pow(r, self.e, self.n)
OverflowError: cannot fit 'long' into an index-sized integer
我真的不知道如何解决此问题,我做错了什么吗?
答案 0 :(得分:0)
当您尝试解密字符串而不是字节时,可能会发生这种情况。