Where is the salt stored for password_hash?

前端 未结 2 1621
醉梦人生
醉梦人生 2021-01-12 09:55

According to (relatively) new PHP documentation:

The password_hash function uses a random salt (which we should not worry about.. O_O), so if I understand correctly

相关标签:
2条回答
  • 2021-01-12 10:33

    The password_hash manual states

    The used algorithm, cost and salt are returned as part of the hash. Therefore, all information that's needed to verify the hash is included in it. This allows the password_verify() function to verify the hash without needing separate storage for the salt or algorithm information.

    Therefore the salt is already included in the hash you are saving in the db.

    0 讨论(0)
  • 2021-01-12 10:54

    Let's learn by example from what everyone else is telling you:

    $options = [
        'cost' => 11,
        'salt' => 'abcdefghijklmnopqrstuv',
    ];
    echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT, $options)."\n";
    

    Output:

    $2y$11$abcdefghijklmnopqrstuu7aZVUzfW85EB4mHER81Oudv/rT.rmWm

    The bolded parts are your cost and salt, respectively embedded in the resulting hash.

    You can spit this back into password_verify and it will handle it accordingly:

    print_r(password_verify('rasmuslerdorf', '$2y$11$abcdefghijklmnopqrstuu7aZVUzfW85EB4mHER81Oudv/rT.rmWm')); // true
    
    0 讨论(0)
提交回复
热议问题