【问题标题】:String that was RSA encrypted using Java contains extra encrypted characters when decrypted using Python使用 Java 进行 RSA 加密的字符串在使用 Python 解密时包含额外的加密字符
【发布时间】:2018-10-18 10:04:53
【问题描述】:

我收到了由 Java 应用程序进行 RSA 加密的数据和 DER 格式的 RSA 公钥。我使用 pycrypto 编写了一个简单的 Python 脚本来解密数据,但是输出包含似乎是加密文本以及我正在寻找的内容。这很不整洁,不适合进一步处理。

原始字符串,我的预期输出类似于:

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) 显示 java 加密代码,以及 2) 说明您用于 RSA 加密的 Python 包。
  • 很遗憾,我没有加密代码。我会尝试得到它。我正在使用 pycrypto
  • @stovfl 不,只是 I2OSP 不会在这里给出答案。指定填充可能会。

标签: python cryptography rsa


【解决方案1】:

您正在对 RSA 加密文本进行原始解密。 RSA 要求 填充 是安全的。您需要使用填充模式 - 可能是 OAEP - as indicated in the documentation of PyCrypto

【讨论】:

  • 非常感谢。 PKCS1_v1_5 填充对其进行了排序。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多