PHP での安全な乱数の生成
PHP での安全な乱数の生成は、元のパスワードがハッシュ化されるパスワード リセットなどのアプリケーションにとって重要です。そして利用不可。 mt_rand が不十分な間は、オペレーティング システムまたは暗号乱数モジュールにアクセスできない可能性があります。
提案された解決策と懸念事項
提案されたアプローチには、初期シードの保存と計算が含まれます。式を使用した後続の乱数:
結果 = シード
シード = sha512(seed . mt_rand())
sha512 は安全ですが、ここで使用すると問題があります。 mt_rand 呼び出しではセキュリティは強化されず、シードはキャンセルされます。この誤解は、セキュリティ システムの設計の弱点を示唆しています。
推奨アプローチ
エントロピーを生成するためにハッシュに依存する代わりに、システムのエントロピー ソースを使用することを強くお勧めします。
これらのソースから安全な 128 ビット文字列を取得するための php.net のサンプル PHP コードを次に示します。
$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 中国語 Web サイトの他の関連記事を参照してください。