ランダムで一意の英数字文字列の生成
アカウント確認リンクなどのさまざまなアプリケーションでは、以下で構成される一意のランダムな文字列を生成することが重要です。数字と文字。 PHP でこれを実現する方法は次のとおりです。
PHP 7
PHP 7 では、暗号的に安全な擬似ランダム バイトを提供するために、random_bytes($length) 関数が導入されています。例:
$bytes = random_bytes(20); var_dump(bin2hex($bytes));
これにより、次のような出力が生成されます:
string(40) "5fe69c95ed70a9869d9f9af7d8400a6673bb9ce9"
PHP 5 (古い)
PHP 5 の場合、次のようになります。代わりに openssl_random_pseudo_bytes() を利用することをお勧めします。これにより、暗号的に安全なデータが生成されます。トークン。簡単な解決策:
bin2hex(openssl_random_pseudo_bytes($bytes))
より安全なアプローチ
セキュリティを強化するために、次の関数は指定された長さの範囲内でランダムで一意の英数字文字列を生成できます。
function getToken($length) { $codeAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; $max = strlen($codeAlphabet); // edited for ($i=0; $i < $length; $i++) { $token .= $codeAlphabet[crypto_rand_secure(0, $max-1)]; } return $token; }
このアプローチには、crypto_rand_secure($min, $max) がドロップインとして組み込まれていますrand() または mt_rand() の代わりに、openssl_random_pseudo_bytes を利用してランダム性を保証します。
以上がPHP で安全なランダムな英数字文字列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。