簡體   English   中英

PHP的mt_rand如何播種?

[英]How is PHP's mt_rand seeded?

我知道PHP的mt_rand()不應該用於安全目的,因為它的結果不是加密強大的。 然而,許多PHP代碼就是這樣做的,或者如果沒有更好的隨機源,則將其用作后備。

那有多糟糕呢? mt_rand用於播種的隨機性來源是什么? mt_rand是否存在加密應用程序的其他安全問題?

在PHP 5.4中,如果mt_rand在第一次使用時自動播種( PHP源代碼 )。 種子值是當前時間戳,PHP進程PID和PHP內部LCG生成的的函數。 我沒有檢查以前版本的PHP的源代碼,但是文檔暗示這個種子算法已經從PHP 5.2.1開始使用了。

mt_rand后面的RNG算法是Mersenne Twister 談論它有多“糟糕”並沒有多大意義,因為它清楚地記錄了(不幸的是在PHP文檔頁面上),它完全不適合加密應用程序 如果您想要加密隨機性,請使用文檔化的加密強度生成器。

更新:您可能還想從crypto.SE查看此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM