使用加密器 R-package 保存和解密加密文件

Saving and decrypting encrypted files with encryptr R-package

我有一个闪亮的应用程序,我想在服务器上存储用户数据,并希望在存储之前对其进行加密。我想为此使用 encryptr 包,但到目前为止我无法使我的解决方案正常工作。到目前为止我所管理的是将数据写入 rds 文件,然后对其进行加密并删除未加密的副本。然而,理想情况下,我只想存储加密文件。但是,当我再次尝试解密时,文件根本没有改变。

#### Approach with storing file first (works)

# data
data <- mtcars

# saving file
saveRDS(data,"Example.rds")

# keys
genkeys()

# encrypting
encrypt_file("Example.rds")

# deleting unencrypted copy
file.remove("Example.rds")

# unencrypting file
data_decrypted <- decrypt_file("Example.rds.encryptr.bin")

我想做的是这样的事情

#### Approach with storing only encrypted file (can't be decrypted again)
    
# data
data <- mtcars
    
# keys
genkeys()

# encrypting data
data <- encrypt(colnames(data))

# saving encrypted data
saveRDS(data,"EncryptedData.rds")

# clearing wd
rm(data)

# loading encrypted data
EncryptedData <- readRDS("EncryptedData.rds.encryptr.bin")

# decrypting data
data_decrypted <- decrypt(colnames(EncryptedData))

您的 encrypt/decrypt 调用中似乎缺少数据参数,而且您打开的文件名有误。尝试

data |> 
  encrypt(colnames(data)) |> 
  saveRDS("EncryptedData.rds")

rm(data)

EncryptedData <- readRDS("EncryptedData.rds")
data_decrypted  <- EncryptedData |> decrypt(colnames(EncryptedData))

请注意,我们将数据传递给加密。如果你只是 运行 encrypt(colnames(data)) 而没有将数据通过管道传输到函数中,你应该会得到一个关于“没有适用的方法......一个 class 字符的对象”的错误。我使用了管道运算符 |>,但您也可以使用常规函数调用。然后,由于您正在写入“EncryptedData.rds”,请确保顶部打开该文件。 encrpyt() 函数更改您的数据。它对保存的文件名没有任何影响。如果您不使用 encrypt_file,文件名将不会更改。