我正在PHP 5.4中开发一个站点,我想知道哪个更好用来创建密码安全的随机盐?我应该使用urandom还是openssl_random_pseudo_bytes?
$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的字符。会有少了很多组合(意为随机的),比如果你只是使用40个字节'openssl_random_pseudo_bytes()' –
我与您的两个建议去 – John