ホームページ >バックエンド開発 >PHPチュートリアル >PHPのランダムさ - 幸運だと感じますか?
この記事では、暗号化で乱数生成を使用することの課題を検証し、PHP 5とPHP 7の違いを強調しています。PHP5には、暗号化的に安全な乱数を生成するための容易に利用可能なメカニズムがありません。この目的のために機能します。
random_bytes
random_int
CSPRNGS 暗号化された擬似ランダム数ジェネレーター(CSPRNG)は、暗号化アプリケーション向けに設計されたPRNGです。 その重要な特性は、高品質のランダム性であり、重要なことです:
キージェネレーション
ランダムなパスワードの作成
例:
random_bytes
例:random_int
(Windows)、random_bytes
(BSD)、
<code class="language-php">$bytes = random_bytes(10); var_dump(bin2hex($bytes)); // Possible output: string(20) "7dfab0af960d359388e6"</code>などの安全なオプションにフォールバックとして優先順位を付けます。 適切なソースが見つからない場合、エラーがスローされます。
random_int
<code class="language-php">var_dump(random_int(1, 100)); // Possible output: 27</code>
CryptGenRandom
乱数ジェネレーターの品質を評価するには、統計テストが含まれます。簡単な例は、サイコロのロールをシミュレートすることです。 3つのサイコロを1,000,000回ローリングするための結果の予想される分布は、arc4random_buf
および標準getrandom(2)
関数によって生成された実際の結果と比較できます。
/dev/urandom
コードの例(簡潔にするために簡略化された)と比較グラフ(以下を参照)は、
。
random_int
php 5代替rand
php 5には組み込みのcsprngがありません。 回避策には、random_int
、rand
、または
への直接アクセスが含まれます。 randomlibやlibsodiumなどのライブラリは、追加のソリューションを提供しています
ライブラリ
PHP 5の互換性の場合、Paragon Initiative Enterprisesライブラリは このライブラリは、 : 結論
CSPRNGを使用することは、安全なアプリケーションに不可欠です。 およびopenssl_random_pseudo_bytes()
およびmcrypt_create_iv()
機能を提供します。 Composer(/dev/urandom
。
random_compat
を使用した単純なパスワード生成例
<code class="language-php">var_dump(random_int(1, 100));
// Possible output: 27</code>
random_compat
を直接利用する必要があります。 信頼できる乱数生成の優先順位付けにより、アプリケーションのセキュリティが大幅に向上します
random_bytes
さらに読み取りrandom_int
謝辞
ピアレビュー支援をしてくれたScott Arciszewskiに感謝します
Description
Link
Die Hard Test
https://www.php.cn/link/1852a2083dbe1c2ec33ab9366feb2862
Chi-square test with dice example
https://www.php.cn/link/fb6a253729096c1e92e43c26a6fdadc3
Kolmogorov-Smirnov Test
https://www.php.cn/link/030d13e49bb7d1add5ac5ea2e4a43231
Spectral Test
https://www.php.cn/link/6bbd80b04535d39be5e02dbfd8730469
RaBiGeTe test suite
https://www.php.cn/link/e626afbcdb83368b3491c0c473da19f1
Random Number Generation In PHP (2011)
https://www.php.cn/link/f7ff233e4ed3e6b13c5d5c7a9201e4ec
Testing RNG part 1 and 2
https://www.php.cn/link/a1c71b134d46d7f7ff00f488874a8d43, https://www.php.cn/link/2e3517ba49c2a7c999b9c8381185ae4e
以上がPHPのランダムさ - 幸運だと感じますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。