Строка, которая была зашифрована RSA с использованием Java, содержит дополнительные зашифрованные символы при расшифровке с использованием Python - PullRequest
0 голосов
/ 16 октября 2018

Мне предоставили данные, которые были зашифрованы RSA приложением Java и открытым ключом RSA в формате DER.Я написал простой Python-скрипт, использующий pycrypto, для дешифрования данных, однако вывод содержит как зашифрованный текст, так и то, что я ищу.Это довольно неопрятно и не подходит для дальнейшей обработки.

Исходная строка, и мой ожидаемый результат будет примерно таким:

elem:1234567890:0987654321

Владельцы приложения, зашифровавшего данные, сказали мне

  1. Декодировать строку из Base64
  2. Расшифровать строку, используя предоставленный мне закрытый ключ (формат DER)

Мой скрипт на Python выглядит примерно так:

from Crypto.PublicKey import RSA
import base64
import sys
import ast
def decode_rsa(encryptedString, key_path):
    key = RSA.importKey(open(key_path).read())
    deocdedString = base64.b64decode(encryptedString)
    decrpytedString = key.decrypt(deocdedString)
    return decrpytedString

print decode_rsa(sys.argv[1], sys.argv[2])

Но когда я запускаю код, я получаю:

python decryptRSA.py Hh6+rJdFA0SPWvbLU8gxbrZXTnYXv3M/XlSU2IHgfGvIMXckrJk/3w7OSjadhNeyIHqzfXNXRexn721lmCh7QZbGXB/cKzuEDr9pAZU6kbrc1BWDLkTuOC5e+vAcV21sebuYQUyWjGGkuMrTtXw9nlT0+h9/GAzFS7wVTFE859w= private_key.der

uB▒#▒▒▒{4elem:1234567890:0987654321&i▒_+▒▒,▒I%▒▒▒▒▒▒(d>

Как видите, мне нужно то, что есть, но есть и другие странные персонажи, возвращающиеся тоже.

1 Ответ

0 голосов
/ 18 октября 2018

Вы дешифруете зашифрованный текст RSA.RSA требует padding для обеспечения безопасности.Вам нужно использовать режим заполнения - вероятно, OAEP - , как указано в документации PyCrypto .

...