PHP bcrypt 出于某种原因给出了非常短的输出
PHP bcrypt gives really short output for some reason
https://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/
我正在按照本教程在我的网站上创建一个登录系统,但是当我尝试按照本教程中所示使用 bcrypt 散列密码时,出于某种原因,输出确实很短。
输入密码示例:gf45_gdf#4hg
示例盐:$2a$20$wEJ27V9qx.HWP68SNLcF7w==
示例输出哈希:$2l6f23nreXR6
我觉得这样比较容易暴力破解,网上有些输出比较长,代码如下:
$cost = 10;
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt = sprintf("a$%02d$", $cost) . $salt;
$hash = crypt($password, $salt);
有谁知道如何增加哈希的长度?
嗯,根据手册:http://php.net/manual/en/function.crypt.php
如果出错,它将 return 一个 "string that is shorter than 13 characters and is guaranteed to differ from the salt"。所以这可能是怎么回事?
尝试检查系统上是否 CRYPT_BLOWFISH == 1。
或者只需使用 password_hash() 即可,因为它可以为您处理盐生成。
https://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/
我正在按照本教程在我的网站上创建一个登录系统,但是当我尝试按照本教程中所示使用 bcrypt 散列密码时,出于某种原因,输出确实很短。
输入密码示例:gf45_gdf#4hg
示例盐:$2a$20$wEJ27V9qx.HWP68SNLcF7w==
示例输出哈希:$2l6f23nreXR6
我觉得这样比较容易暴力破解,网上有些输出比较长,代码如下:
$cost = 10;
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt = sprintf("a$%02d$", $cost) . $salt;
$hash = crypt($password, $salt);
有谁知道如何增加哈希的长度?
嗯,根据手册:http://php.net/manual/en/function.crypt.php
如果出错,它将 return 一个 "string that is shorter than 13 characters and is guaranteed to differ from the salt"。所以这可能是怎么回事?
尝试检查系统上是否 CRYPT_BLOWFISH == 1。
或者只需使用 password_hash() 即可,因为它可以为您处理盐生成。