使用RSA加密R中的文本并使用Python解密

时间:2019-10-19 07:16:26

标签: python r encryption rsa

我有一个R脚本,该脚本调用系统调用,将敏感数据作为参数传递给Python脚本。我想在传递参数之前使用RSA加密这些参数。然后在Python脚本中解密它们。

遵循建议herehere

R:

# main.R
library(PKI)

key <- PKI.genRSAkey(2048L)
PKI.save.key(key, target = "privkey.pem")
msg <- charToRaw("password")
msg.e <- PKI.encrypt(msg, key)

result = system2("python", args = c("dostuff.py", msg.e), stdout = TRUE)
print(result)

Python:

# dostuff.py
import Crypto
from Crypto.PublicKey import RSA
import ast, sys

key = RSA.importKey(open('privkey.pem').read())

encrypted = sys.argv[1]
decrypted = key.decrypt(ast.literal_eval(str(encrypted)))
print("Decryption returned:", decrypted)  # decrypted != "password" :(

尝试此操作时,会得到一长串数字(不是“密码”),或者当我尝试b64decode时,它会出错(binascii.Error:填充不正确)。通常由于不正确地读取和解码二进制,十六进制及其字符串表示形式而导致许多不同的错误。

PKI.encrypt需要原始输入的事实是问题的一部分。我不确定Python如何读取它,如何转换它,并在返回R时解释结果。

0 个答案:

没有答案