加密器将相同的ID绑定到不同的输出

  • 本文关键字:输出 绑定 ID 加密 r
  • 更新时间 :
  • 英文 :


我正试图加密一个具有相同ID的多行数据库。使用"encryptr"对于相同的ID,我得到不同的结果。我怎样才能改变这一点?

示例代码:

ID <- c('1','1','1')
salary <- c(21000, 23400, 26800)
data <- data.frame(ID, salary)
data = 
data %>%
encryptr::encrypt(ID)
data

我如何强制它将相同的ID编码为相同的编码字符串?

谢谢!

你不能。从他们的网页https://encrypt-r.org:

不是散列

为给定输入产生的密文将随每次输入而改变加密。这是RSA算法的一个特点。暗文应该因此,不会尝试在加密的数据集之间进行匹配使用相同的公钥。这是一个有意识的决定与共享必要细节相关的风险(一个盐)。

编辑添加:

如果你真的想要一个散列,digest包可以计算几个。它被设计为一次对整个向量进行哈希,但你可以使用Vectorize对每个元素进行哈希,例如

library(digest)
vdigest <- Vectorize(digest)
data <-
data %>% mutate(hash = vdigest(ID)) %>% encryptr::encrypt(ID)

反转vdigest并不容易,所以您可能需要哈希值和加密ID。

请注意,encryptr的作者知道他们在做什么:包括哈希会使加密更不安全。

最新更新