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

2024-05-16 01:45:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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" :(

当我尝试这个方法时,会得到一个长字符串(不是“password”),或者当我尝试b64decode(binascii.Error:Incorrect padding)时会出错。我得到了很多不同的错误,通常是由于不正确的读取和解码二进制,十六进制,以及它们的字符串表示

PKI.encrypt需要原始输入是问题的一部分。我不确定Python是如何读取它的,我应该如何转换它,以及当它返回到R时如何解释结果


Tags: keyimport脚本参数heremsgpasswordresult