PHP 中的 password_hash() 怎么样
What about password_hash() in PHP
我一直在阅读有关此 password_hash()
的各种论坛和教程,它们似乎对密码保护很有用。
但现在我想知道为
这样的函数制作自己的盐和散列是否更好
$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
password_hash($password, PASSWORD_BCRYPT, $options);
或者让函数来做:
password_hash($password, PASSWORD_DEFAULT);
似乎有很多关于使用自己的盐是好是坏的讨论。
有人可以解释为什么使用自己的盐不好(或不好)吗?
盐只是对彩虹 table 攻击的一种保护。
它不会使一个散列更难破解,而是使更大的整体更难破解。
如果您对每个哈希使用不同的盐,攻击者将需要为每个密码制作彩虹table。
这在工作方式和时间上是不切实际的。
使用伪随机 rng 生成盐将完成保护更大的整体密码的工作。
https://crypto.stackexchange.com/questions/1776/can-you-help-me-understand-what-a-cryptographic-salt-is
由于该函数已经生成了一个安全盐,因此不建议您使用实际上更糟糕的 rng 生成您自己的盐。
只需让函数生成强盐就可以了,而且工作量也更少,因为您不必自己创建盐。
Correct way of creating salted hash password
引用之前的 link:
It is recommended that you do not pass your own salt, instead let the function create a cryptographically safe salt from the random source of the operating system.
The salt will be included in the resulting hash-value, so you don't have to store it separately. Just create a 60 character string field in your database and store the hash-value. The function password_verify() will extract the used salt from the stored hash-value. For more information you can have a look at my tutorial about storing passwords.
因为如果您不创建自己的盐,它会自动为您创建一个安全的盐。
来自文档:
Caution
It is strongly recommended that you do not generate your own salt for
this function. It will create a secure salt automatically for you if
you do not specify one.
所以,为了回答你的问题,如果你对盐或其他不了解更多......就不要使用自己的盐,这个功能足够强大!
我一直在阅读有关此 password_hash()
的各种论坛和教程,它们似乎对密码保护很有用。
但现在我想知道为
这样的函数制作自己的盐和散列是否更好$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
password_hash($password, PASSWORD_BCRYPT, $options);
或者让函数来做:
password_hash($password, PASSWORD_DEFAULT);
似乎有很多关于使用自己的盐是好是坏的讨论。
有人可以解释为什么使用自己的盐不好(或不好)吗?
盐只是对彩虹 table 攻击的一种保护。
它不会使一个散列更难破解,而是使更大的整体更难破解。
如果您对每个哈希使用不同的盐,攻击者将需要为每个密码制作彩虹table。
这在工作方式和时间上是不切实际的。
使用伪随机 rng 生成盐将完成保护更大的整体密码的工作。
https://crypto.stackexchange.com/questions/1776/can-you-help-me-understand-what-a-cryptographic-salt-is
由于该函数已经生成了一个安全盐,因此不建议您使用实际上更糟糕的 rng 生成您自己的盐。
只需让函数生成强盐就可以了,而且工作量也更少,因为您不必自己创建盐。
Correct way of creating salted hash password
引用之前的 link:
It is recommended that you do not pass your own salt, instead let the function create a cryptographically safe salt from the random source of the operating system.
The salt will be included in the resulting hash-value, so you don't have to store it separately. Just create a 60 character string field in your database and store the hash-value. The function password_verify() will extract the used salt from the stored hash-value. For more information you can have a look at my tutorial about storing passwords.
因为如果您不创建自己的盐,它会自动为您创建一个安全的盐。
来自文档:
Caution
It is strongly recommended that you do not generate your own salt for this function. It will create a secure salt automatically for you if you do not specify one.
所以,为了回答你的问题,如果你对盐或其他不了解更多......就不要使用自己的盐,这个功能足够强大!