【发布时间】:2015-10-23 23:21:38
【问题描述】:
我正在使用这个函数来生成密码:
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);
}
我的问题是,当我在64位服务器上使用时,结果是这样的:
$2y$11$1ws6drmcqHCWG8wj5bm5s.R8Opc0.JEjXy0.P9UsHjqoxjZQ5GYLW
当我在 32 位服务器上使用它时,结果是这样的:
$2uUq69/OVG3M
所以,我有两个问题:
- 为什么会这样?
$salt在两者中的长度相同 - 32 位密码是否存在安全问题?
谢谢!
【问题讨论】:
-
您使用的是 PHP 5.5+ 吗?如果是这样,
password_hash()将负责应用适当的回合/等。而且您不需要独立管理盐(这可能会导致您的问题)。