2

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

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

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

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

我的问题如下:

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

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

3) 登录后,我将如何比较散列值?

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

谢谢!

4

1 回答 1

3

1)那是哈希的盐,你需要使盐更随机(EG不同的盐为每个用户提供最大的保护)

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

3)您将执行以下步骤

  1. 从表单中获取密码和用户名
  2. 从数据库中获取盐,然后用该盐 crypt() 密码字符串
  3. 您获得的新字符串(散列+加盐密码)然后将其与数据库进行比较(EG 是用户名 = xxx 和密码 = zz9zjz9)并查看是否返回任何行,如果返回行那么你知道它是正确的密码并登录该人。

4)我不确定你的意思,请详细说明!

于 2012-07-24T10:33:50.557 回答