OverflowError: не может вписать 'long' в целое число размером с индекс [расшифровка RSA] - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь расшифровать сообщение с помощью открытого ключа:

Я знаю, что это не стандарт, но в моем случае шифрование выполняется с помощью закрытого ключа, а дешифрование - с помощью открытого ключа.Сервер шифрует данные, отправляет их клиентам.Клиенты имеют открытый ключ и могут расшифровывать данные с сервера.

-----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, в котором есть раздел с именем 'session', который зашифрован и для его правильного чтения мне нужно расшифровать с помощью открытого ключа, опубликованного выше, но когда я пытаюсь расшифровать, я получаю следующую ошибку:

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

Я действительно не знаю, как решить эту проблему, я делаю что-то не так?

...