如何在用作标识符时哈希社会安全号码

时间:2018-05-13 22:55:02

标签: encryption hash sha256 sha

我有一项服务,让用户可以在线保存他们的大家庭信息(例如消息,视频等等),以便在他们去世时分享。前 - 当我通过方式告诉他我爱他时,将此视频发送给我的侄子。

我有一个JSON结构化数据库,用于将用户社会安全号码存储为其个人资料的标识符。

 $salted_hashed_ssn: {
    //important information for extended family such as vidoes and email addresses
   }

当用户去世时,他们最亲近的家庭成员会前往我的网站并输入已故人员的社会安全号码。我然后哈希那些,看看我的数据库是否匹配。如果匹配,我们然后运行函数来共享扩展系列的重要信息。

为最坏的情况做准备,我希望尽可能安全地存储社会安全号码。因为我只需要使用社会安全号码作为标识符,所以我不必存储原始/纯文本ssn值。因此,我可以散列ssns但我需要对它们进行加盐以防止查找表。我的问题是,当用户输入已故用户的社会安全号码时,我无法查看使用了哪个盐键。

为了使其随意并防止查找表格,您如何推荐我的社会安全号码?我应该每次只拿x个字符吗?即 - 总是抓住社会安全号码的前4个字符,哈希那些,然后将它们写入完整的SSN,然后重新进行重新划分?

让salted_hashed_ssn = SHA256(SSN的前4个字符)+ SHA256(SSN)?

您如何建议设置salt和hash?

1 个答案:

答案 0 :(得分:1)

您可以像处理密码一样处理您的SSN。请记住,盐并不是必须保密的,每个条目只需要不同。因此,只需将盐与哈希一起存储,这是非常安全的。

但是,我不建议在这里使用SHA256。请改用bcrypt。它为您处理盐,这意味着您无需担心上述建议。它对强暴的抵抗力也要强得多。 SHA系列不是按照您使用它的方式设计的。