我应该使用什么散列函数来散列小数值?

时间:2012-06-06 17:51:16

标签: .net security hash numbers

在某些情况下,组织不得使用或存储有用的密钥,例如SSN号码,电话号码等。

但是,这些唯一键对于匹配数据非常有用。因此,理论上,如果数据提供者能够为您提供SSN的散列值,并且您要存储该散列并将其用于匹配,则您将永远不必使用或存储SSN。

对于类似SSN的东西,适当的哈希函数是什么?

2 个答案:

答案 0 :(得分:1)

  

因此,理论上,如果数据提供者能够为您提供SSN的散列值,并且您要存储该散列并将其用于匹配,则您将永远不必使用或存储SSN。

这是假的;设计的散列不是唯一的,不能用于唯一标识任何东西。如果您必须唯一标识某些内容,并且不允许使用其他人的标识符,则必须提供自己的标识符。这就是为什么像加油卡,电影租赁卡等等。有自己独特的会员标识符。

答案 1 :(得分:1)

您需要将SSN视为密码。使用强大,缓慢的哈希算法(例如bcryptPBKDF2)使用唯一的每记录前缀和后缀salt对其进行哈希处理。

散列SSN的缺点是它们是可预测的,并且具有非常小的熵,使得明文暴力非常容易。如果你负担得起,我建议投资硬件保护(即HSM)用于此类事情。事实上,你应该完全avoid identifying people by their SSN