0

试图找到一种方法来减少系统中重复的联系人条目。姓名、电子邮件地址、家庭住址和电话号码可能会发生变化,因此这些不是 100% 唯一的标识符。

但是,出生日期和 SSN 不会改变。我正在考虑将组合存储date_of_birth-ssn为加密哈希以唯一标识联系人并合并重复项。

我的理解是,在数学上“不可能”反转哈希,因此以这种方式存储它是“安全的” ssn

我知道最安全的方法是不存储任何东西。但是,我不确定我可以使用哪些其他信息来唯一识别一个人。

有没有更好的解决方案来唯一识别不会使用敏感信息的人ssn

4

1 回答 1

2

这绝对不安全

通常,您无法反转哈希。如果我有大量随机数据并给你散列,你就无法取回这个 blob。这不是你所提议的。

一年 365 天,每个人都在 100 岁以下,只有大约 36500 个可能的 DoB(好吧,有些人超过 100,但不是您的联系人 - 可能的 DoB 的实际数量可能在 20,000 左右)。SSN 是 9 位数字,因此只有 1,000,000,000 个可能的值(实际上要少得多)。

总而言之,有 20,000,000,000,000 种可能的组合。听起来很多?它不是。我正在使用的这台笔记本电脑每个内核每秒可以进行超过 1100 万次哈希。它可以在 1,707,026 秒或 19 天内测试所有可能的组合。带有一个使用 4 年的笔记本电脑内核。一台具有 20 个内核、花费数千美元(没有专门的硬件)的强大服务器可以在数小时内准备好这张表。然后我可以反转的不是散列函数,而是你可能看到的输出子集。

于 2017-01-17T22:20:02.837 回答