ホームページ > バックエンド開発 > PHPチュートリアル > 機密性の高いアプリケーション用に PHP で安全な乱数を生成するにはどうすればよいですか?

機密性の高いアプリケーション用に PHP で安全な乱数を生成するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 08:40:15
オリジナル
242 人が閲覧しました

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

これらのソースから安全な 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート