2013-07-17 26 views
1

我正在使用this設置進行持久登錄。PHP生成隨機128位持久登錄

我的理解是我需要一個帶有用戶名和cookie標記哈希的額外表格。然後,您可以爲一個用戶創建多個令牌。

我遇到的問題是我需要一個隨機令牌。在文章中,他們建議它是128位,所以我猜想有16個十六進制值。但是這些必須是真正隨機的,因爲這非常重要。爲了存儲它們,我會bcrypt()他們,這樣,如果數據庫被損害,它仍然需要'長',纔可以使用cookie來登錄到另一個帳戶。

TL; DR:需要一個真正的隨機128位字符串/數字/ ...。我找到了幾種方法,但我不知道哪些是真正的隨機。

+0

什麼是你的真實隨機性的測量? –

+0

當然,由於它是由一個服務器完成,它從來沒有真正的隨機,但隨機可以得到... – jdepypere

+0

很好實現僞隨機發生器是實用的隨機 –

回答

2

不要重新發明輪子(特別是密碼學,99%的時間會讓它變得更糟)。
嘗試類似OpenSSL implementation

+0

因此''openssl_random_pseudo_bytes(16);'應該是相當隨機?它是否仍然需要轉換爲十六進制或者是十六進制嗎? – jdepypere

+1

它會返回二進制,你需要用'pack'或'bin2hex'將它轉換爲十六進制。就隨機性而言,如果它具有密碼安全性,那麼它就像它一樣好。 –