PHP crypt盐生成

时间:2013-07-24 15:20:25

标签: php encryption crypt

我正在为这个

的php crypt函数生成salt
$hashSalt = substr(md5(time().uniqid(rand())),0, 22);

$hashedPassword = crypt('SmithJohn', '$2a$07$'.$hashSalt.'$');

据我了解,这是一个很好的方法。你有什么想法?

1 个答案:

答案 0 :(得分:2)

太复杂,不一定足够随机。使用为此目的而制作的来源:

mcrypt_create_iv($salt_len, MCRYPT_DEV_URANDOM)

openssl_random_pseudo_bytes($salt_len)

$buffer = '';
$f = fopen('/dev/urandom', 'r');
$read = strlen($buffer);
while ($read < $salt_len) {
    $buffer .= fread($f, $salt_len - $read);
    $read = strlen($buffer);
}
fclose($f);

最好全部用作多层回退,如https://github.com/ircmaxell/password_compat/blob/master/lib/password.php#L84

所示