CRYPT_BLOWFISH用法

时间:2012-07-24 10:26:21

标签: php login hash passwords

我一直在研究处理用户登录密码的选项,我对如何使用CRYPT_BLOWFISH有一些疑问。我读到了如何实现它,但我想在开始玩它之前更好地理解它。

所以我打算做这样的事情:

 function genBlowfishSalt()
 {
      //return random string for Salt
 }

 $hash = crypt($password, '$2a$12$'. genBlowFishSalt());

我的问题如下:

1)什么是'$ 2a $ 12 $'?

2)我知道在这种情况下我必须为每个用户存储盐,我想在没有自己的哈希的情况下存储它是可以接受的吗?盐是否附加到散列值?

3)登录后,如何运行哈希值的比较?

4)我还读到有一个概念需要为每个用户存储多个迭代,这与密码的散列有什么关系?

谢谢!

1 个答案:

答案 0 :(得分:2)

1)这是散列的盐,你需要让盐更随机(为每个用户提供不同的盐以获得最大程度的保护)

2)是的,您可以将盐存储在一个字段中,将盐渍哈希存储在另一个字段中。

3)您将执行以下步骤

  1. 从表单
  2. 获取密码和用户名
  3. 从数据库中获取salt,然后使用该salt
  4. 来加密()密码字符串
  5. 你得到的新字符串(散列+盐渍密码)然后你将它与数据库进行比较(EG是用户名= xxx和密码= zz9zjz9)并查看是否返回任何行,如果有行返回则你知道它是正确的密码并记录该人。
  6. 4)我不确定你的意思,请详细说明!