首頁 > 後端開發 > php教程 > 如何在 PHP 中為敏感應用程式產生安全隨機數?

如何在 PHP 中為敏感應用程式產生安全隨機數?

Susan Sarandon
發布: 2024-11-30 08:40:15
原創
266 人瀏覽過

How Can I Generate Secure Random Numbers in PHP for Sensitive Applications?

在PHP 中產生安全隨機數

在PHP 中產生安全隨機數對於密碼重設等應用程式至關重要,其中原始密碼是經過雜湊處理的並且不可用。雖然 mt_rand 不足,但作業系統或加密隨機數模組可能無法存取。

建議的解決方案和問題

建議的方法包括儲存初始種子併計算使用公式的後續隨機數:

結果= 種子
種子= sha512(seed .mt_rand())

雖然sha512是安全的,但在這裡使用它是錯誤的。 mt_rand 呼叫不會增強安全性,種子會被取消。這種誤解顯示了安全系統設計的弱點。

建議方法

強烈建議使用系統的熵源,而不是依賴雜湊來產生熵:

  • Unix /Linux: /dev/urandom
  • Windows: crypto-api

以下是來自php.net 的範例PHP 程式碼,用於從這些來源取得安全的128位元字串:

$pr_bits = '';

// Unix/Linux platform
$fp = @fopen('/dev/urandom','rb');
if ($fp !== FALSE) {
    $pr_bits .= @fread($fp,16);
    @fclose($fp);
}

// MS-Windows platform
if (@class_exists('COM')) {
    try {
        $CAPI_Util = new COM('CAPICOM.Utilities.1');
        $pr_bits .= $CAPI_Util->GetRandom(16,0);
    } catch (Exception $ex) {
        // Handle exception
    }
}

if (strlen($pr_bits) < 16) {
    // Handle entropy source issue
}
登入後複製

使用此方法可確保安全的隨機數生成,這對於保護PHP中的敏感數據至關重要應用程式。

以上是如何在 PHP 中為敏感應用程式產生安全隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板