seb*_*ria 0 php security crypt salt
我正在使用此函数生成密码:
function generarPassword($password, $cost=11){
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
$salt='$'.implode('$',array("2y",str_pad($cost,2,"0",STR_PAD_LEFT),$salt));
return crypt($password,$salt);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我在64位服务器上使用它时,结果如下:
$2y$11$1ws6drmcqHCWG8wj5bm5s.R8Opc0.JEjXy0.P9UsHjqoxjZQ5GYLW
Run Code Online (Sandbox Code Playgroud)
当我在32位服务器上使用它时,结果如下:
$2uUq69/OVG3M
Run Code Online (Sandbox Code Playgroud)
所以,我有两个问题:
$salt是在两个相同的长度谢谢!
CRYPT_BLOWFISH - 带有盐的河豚散列如下:"$ 2a $","$ 2x $"或"$ 2y $",两位数的成本参数"$",字母表中的22个字符"./0-9A -za-Z".在salt中使用此范围之外的字符将导致crypt()返回零长度字符串
5.3.7之前的PHP仅支持"$ 2a $"作为salt前缀:PHP 5.3.7
您$salt不符合22 characters from the alphabetblowfish算法的约束.您需要检查生成适当盐的过程.
$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.');
echo $salt.' ('.strlen($salt).')';
// example: D3Zc0fv8BBLKYnpH0iSV0w== (24)
Run Code Online (Sandbox Code Playgroud)
其次,您使用的$2y$是仅在PHP 5.3.7之后支持的前缀.如果您在两个不同的系统上使用此代码,则需要解决这两个问题.
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |