使用 encryptr R-package 保存和解密加密文件
Posted
技术标签:
【中文标题】使用 encryptr R-package 保存和解密加密文件【英文标题】:Saving and decrypting encrypted files with encryptr R-package 【发布时间】:2022-01-13 17:20:48 【问题描述】:我有一个闪亮的应用程序,我想将用户数据存储在服务器上,并希望在存储之前对其进行加密。我想为此使用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))
【问题讨论】:
【参考方案1】:您的encrypt/decrypt
调用中似乎缺少数据参数,并且您打开了错误的文件名。试试
data |>
encrypt(colnames(data)) |>
saveRDS("EncryptedData.rds")
rm(data)
EncryptedData <- readRDS("EncryptedData.rds")
data_decrypted <- EncryptedData |> decrypt(colnames(EncryptedData))
请注意,我们将数据传递给加密。如果你只是运行encrypt(colnames(data))
而不将数据传递到函数中,你应该会得到一个关于“没有适用的方法......类字符的对象”的错误。我使用了管道运算符|>
,但您也可以使用常规函数调用。然后,由于您正在写入“EncryptedData.rds”,请确保顶部打开该文件。 encrpyt()
函数会更改您的数据。它对保存的文件名没有任何影响。如果你不使用encrypt_file
,文件名不会改变。
【讨论】:
谢谢!这行得通!你知道是否有办法从文件中存储和调用密码,这样我解密时就不必为每一列手动输入密码了吗?以上是关于使用 encryptr R-package 保存和解密加密文件的主要内容,如果未能解决你的问题,请参考以下文章
javax.crypto.BadPaddingException: Given final block not properly padded