由于 EU-GDPR,如何 protect/encrypt RData 文件中的 R 对象

How to protect/encrypt R objects in RData files due to EU-GDPR

我想用强加密算法保护我的 RData 文件的内容 因为它们可能包含敏感的个人数据,这些数据不得 因(法律)EU-GDPR 要求而披露。

我如何在 R 中执行此操作?

我想避免在创建文件后对 RData 文件进行第二次手动加密,以尽量减少忘记或忽略任何 RData 文件的风险。

在这种情况下,我正在与 Windows 合作...

library(openssl)

x <- serialize(list(1,2,3), NULL)

passphrase <- charToRaw("This is super secret")
key <- sha256(passphrase)

encrypted_x <- aes_cbc_encrypt(x, key = key)

saveRDS(encrypted_x, "secret-x.rds")

encrypted_y <- readRDS("secret-x.rds")

y <- unserialize(aes_cbc_decrypt(encrypted_y, key = key))

你需要处理秘密管理(即密钥),但这个通用的习惯用法应该有效(稍微更防弹)。

我知道已经很晚了,但请查看这个包 endecrypt

安装:

devtools::install_github("RevanthNemani\endecrypt")

使用以下函数进行列加密:

airquality <- EncryptDf(x = airquality, pub.key = pubkey, encryption.type = "aes256")

列解密:

airquality <- DecryptDf(x = airquality, prv.key = prvkey, encryption.type = "aes256")

检查这个 Github page

请记住生成您的密钥并保存以供首次使用。在需要时加载密钥并将密钥对象提供给函数。

例如

SaveGenKey(bits = 2048,
              private.key.path = "Encription/private.pem",
              public.key.path = "Encription/public.pem")

# Load keys already stored using this function 
prvkey <- LoadKey(key.path = "Encription/private.pem", Private = T)

它非常易于使用,您的数据帧可以存储在数据库或 Rdata 文件中。