我需要一個大的(比如說,128位大)的隨機數生成器在PHP中。我正在考慮將此數字作爲十六進制存儲在字符串中。大隨機數生成
請注意,這是一個登錄系統,提到需要一個「隨機」數字,所以我猜我真的需要它「足夠隨機」(因爲我知道僞隨機是從未真正隨機)。
我正在考慮的算法是一次生成第一個十六進制數字,然後將它連接在一起。就像這樣:
$random = '';
for ($i = 0; $i < 32; ++$i) {
$digit = rand(0, 15);
$random .= ($digit < 10 ? $digit : ($digit - 10 + 'a'));
}
return $random;
我能相信這個函數返回良好的僞隨機數還是我的東西我真的不應該搞亂?
爲什麼不直接替換$ salt by rand()?難道它不是隨機的嗎?哎呀,可能更隨機。 – luiscubal 2010-09-11 20:53:46
這是真的,但如果你想這樣做,但使用rand()會否定你對比期望散列的能力。例如。在密碼的情況下,你經常會用鹽對用戶的密碼進行散列 - 然後,因爲你大概是唯一知道鹽的人,那麼你可以比較你記錄在該用戶數據庫中的散列與「期望的散列「,你可以驗證它是正確的。 – julio 2010-09-16 16:37:12