以下引用让我质疑我认为我知道的事情。
“现在考虑bcrypt。它使用Blowfish加密魔术字符串,使用 从密码“派生”的密钥。以后,当用户输入 密码,密钥再次派生,如果密文生成 用该密钥加密匹配存储的密文,用户是 认证。密文存储在“密码”表中,但是 永远不会存储派生密钥。“
我假设您存储了盐渍密码的哈希值。
Where:
- KDF = a key derivation function such as pbkdf2 or bcrypt
- salt = a unique 16 byte salt
- password = the password the user entered
- saltedPassword = the password appended to the salt
- hashedSaltedPassword = KDF(saltedPassword)
- USER = a database table where usernames and passwords are stored<br
USER.Password = hashedSaltedPassword
USER.PasswordSalt = salt
这是正确的还是我离开了?
答案 0 :(得分:1)
您的引用基本上描述了如何使用bcrypt(这是key-derivation function)作为盐渍哈希函数的基础。该函数的输入是密码和salt,其输出是哈希值。该哈希值碰巧是通过使用bcrypt派生密钥加密常量字符串而生成的密文,但您并不关心:您只是将其用作哈希值。
是的,你做存储盐渍密码的哈希值。