php - 社会保障/政府 ID 号的哈希和盐的替代方案

标签 php mysql encryption hash salt

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

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

我想知道两件事:

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

最佳答案

crypt 完全没问题,但有以下注意事项:

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

关于php - 社会保障/政府 ID 号的哈希和盐的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27448191/

相关文章:

php - 如何使用相同的ajax比较两个值?

c# - 如何创建 "upgradable"加密类

javascript - 一定时间间隔后自动更新页面

javascript - 使用 php codeigniter 将计算出的 javascript 变量值传递到文本字段

php - 如果字符串已存在,则在字符串后添加数字

mysql - 8 位小数的纬度/经度应该使用哪种 MySQL 数据类型?

mysql - 最佳实践 : is sql views really worth it?

java - 创建具有以 base 64 编码的字节数组的 PrivateKey 和 PublicKey

ruby-on-rails - 公司在 ActiveRecord/Ruby on Rails 网络应用程序中对加密进行代码审查?

php - 如何将我的消息添加到 Laravel 4.2 中的 $errors 变量