替代哈希和盐的社会保障/政府身份证号码

时间:2014-12-12 16:44:18

标签: php mysql encryption hash salt

我有一个带有社会安全号码的表单,我需要编写代码来检查它是否在过去两天内输入。这一切都很容易。

我目前的计划是创建一个表ssn_hash(id, ssn_hash, date)并对ssn进行哈希/盐化,然后将它们插入到数据库中。之后,创建一个显示持续两天的视图。 salt是从表单中获取的一些其他用户数据。

我想知道两件事:

  1. 这是一个好方法吗?或者是否有其他一些常见的做法可以达到相同的效果。
  2. 在PHP下,是std库中crypt()函数的唯一选项吗?

2 个答案:

答案 0 :(得分:1)

以下警告

crypt完全没问题:

  • 如果您将用户数据用作盐,则会严重限制其随机性。选择类似openssl_random_pseudo_bytes的内容。
  • 不要害怕将盐储存在餐桌上。实际上attr_encrypted,一个流行的Ruby on Rails gem就是这样做的。只需确保为每个条目生成一个独特的盐。切勿重复使用盐。
  • 确保您不使用DES或SHA-1等破坏的加密方法。您可以指定CRYPT_BLOWFISHCRYPT_SHA512

答案 1 :(得分:1)

如果您需要快速查看以查看是否已使用该号码,密码加密功能将无法为您提供帮助。相反,您必须使用直接的SHA1类型哈希,以便进行反向查找。

您希望绝对确定您的服务器是否已正确保护。定期清除此表中的数据可能也是一个好主意。