Шифрование текста в R и дешифрование в Python с использованием RSA - PullRequest
2 голосов
/ 19 октября 2019

У меня есть скрипт R, который вызывает системный вызов, передавая конфиденциальные данные в качестве аргументов скрипту Python. Я хочу использовать RSA для шифрования этих аргументов перед их передачей. Затем расшифруйте их в скрипте Python.

Следующие предложения здесь и здесь

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.

...