试图找到一种方法来减少系统中重复的联系人条目。姓名、电子邮件地址、家庭地址和电话号码可能会更改,因此这些都不是100%唯一的标识符。
但是,出生日期和SSN不变。我正在考虑将date_of_birth-ssn
的组合存储为加密哈希,以唯一标识联系人并合并重复项。
我的理解是,在数学上"不可能"反转哈希,因此以这种方式存储ssn
是"安全的"。
我知道最安全的方法是不储存任何东西。然而,我不确定我还能用什么其他信息来唯一地识别一个人。
有没有更好的解决方案来唯一识别那些不会使用ssn
等敏感信息的人?
这显然是不安全的。
通常情况下,您无法反转哈希。如果我有大量随机数据,并给你哈希,你就无法取回这些数据。这不是你的提议。
一年365天,每个人都在100岁以下,只有大约36500个可能的DoB(好吧,有些人超过了100,但不是你的联系人——可能的DoBs的实际数量可能在20000左右)。SSN是9位数字,所以只有1000000000个可能的值(实际上要少得多)。
总的来说,有20000000000000种可能的组合。听起来很多?事实并非如此。我使用的这台笔记本电脑每核每秒可以进行超过1100万次哈希。它可以在1707026秒或19天内测试所有可能的组合。有一个4岁的笔记本电脑核心。一台功能强大的服务器,有20个核心,花费数千美元(没有专门的硬件),可以在几个小时内准备好这张表。然后我可以反转的不是散列函数,而是你可能看到的输出子集。