使用库(gpg)加密/解密R中的对象

时间:2018-10-01 21:28:40

标签: r encryption serialization gnupg

我有以下数据帧,可以使用库(gpg)包和密钥来加密。

library(gpg)
df <- data.frame(A=c(1,2,3), B=c("A", "B", "C"), C=c(T,F,F))
df <- serialize(df, con=NULL, ascii=T)
enc <- gpg_encrypt(df, receiver="my@email.com")

writeBin(enc, "test.df.gpg")

现在,为了恢复数据帧,逻辑上的事情就是解密文件

dec <- gpg_decrypt("test.df.gpg") 
df <- unserialize(dec) #throws error ! 

(正确提示输入密码),然后反序列化(dec)。但是,似乎gpg_decrypt()向“ dec”传递了一系列纯字符,因此无法恢复原始数据帧。

我可以使用gpg2命令在Linux命令行上毫无问题地解密文件,然后使用readRSD()将解密的文件读取到R中,然后将原始数据帧还原为ok。

但是,我要unserialize()“ dec”,从而将文件直接解密为R。

我知道还有其他解决方案,例如Hadleys安全软件包,但对我来说,它也不是没有问题(描述为here)。

1 个答案:

答案 0 :(得分:0)

对解密原始数据的支持已添加到gpg R包中。参见https://github.com/jeroen/gpg/issues/5

加密的数据可以直接读取到R工作内存中,而无需在磁盘上存储解密的文件。