【发布时间】:2012-12-14 21:35:39
【问题描述】:
我正在用 php 5.4 开发一个网站,我想知道哪个更好地用于生成随机盐以确保密码安全?
$salt = sha1(openssl_random_pseudo_bytes(23));
或
$seed = '';
$a = @fopen('/dev/urandom','rb');
$seed .= @fread($a,23);
$salt = sha1(seed);
或者我应该选择:
$salt = openssl_random_pseudo_bytes(40);
或
$salt = '';
$a = @fopen('/dev/urandom','rb');
$salt .= @fread($a,23);
【问题讨论】:
-
使用
sha1()将大大降低随机盐的有效性,因为它会将其转换为40 个字符且仅包含0-9 和a-f 字符的字符串。与仅使用来自openssl_random_pseudo_bytes()的 40 个字节相比,组合会少得多(意味着随机性更少)。 -
我同意你的两个建议