我正在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