Encryption 从密码派生密钥时,我应该存储密钥还是使用密钥进行加密?

Encryption 从密码派生密钥时,我应该存储密钥还是使用密钥进行加密?,encryption,passwords,Encryption,Passwords,下面这句话让我对自己所知道的东西产生了疑问 现在考虑BLIPT,它使用BooFiver加密一个魔法字符串,使用 从密码“派生”的密钥。稍后,当用户输入 密码,则再次派生密钥,如果 使用该密钥加密与存储的密文匹配,则用户 已验证。密文存储在“密码”表中,但 派生密钥永远不会被存储。” 我假设您存储了salt密码的散列 Where: - KDF = a key derivation function such as pbkdf2 or bcrypt - salt = a un

下面这句话让我对自己所知道的东西产生了疑问

现在考虑BLIPT,它使用BooFiver加密一个魔法字符串,使用 从密码“派生”的密钥。稍后,当用户输入 密码,则再次派生密钥,如果 使用该密钥加密与存储的密文匹配,则用户 已验证。密文存储在“密码”表中,但 派生密钥永远不会被存储。”

我假设您存储了salt密码的散列

    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
其中:
-KDF=密钥派生函数,如pbkdf2或bcrypt
-salt=唯一的16字节salt
-password=用户输入的密码
-saltedPassword=附加到salt的密码
-hashedSaltedPassword=KDF(saltedPassword)

-USER=存储用户名和密码的数据库表您的报价基本上描述了如何使用bcrypt(即a)作为salt哈希函数的基础。该函数的输入是密码和salt,输出是散列值。该散列值恰好是通过使用bcrypt派生密钥加密常量字符串而生成的密文,但您并不关心这一点:您只是将其用作散列值


因此,是的,您确实存储了加密密码的散列。

加密密码的散列就是密码文本。谢谢Wyzard,我很确定我做对了,但我没有接受过正式培训,我想我可能错过了一步。
    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