ホームページ > バックエンド開発 > PHPチュートリアル > PHP で安全なランダムな英数字文字列を生成するにはどうすればよいですか?

PHP で安全なランダムな英数字文字列を生成するにはどうすればよいですか?

DDD
リリース: 2025-01-01 06:15:11
オリジナル
748 人が閲覧しました

How Can I Generate Secure Random Alphanumeric Strings in PHP?

ランダムで一意の英数字文字列の生成

アカウント確認リンクなどのさまざまなアプリケーションでは、以下で構成される一意のランダムな文字列を生成することが重要です。数字と文字。 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 サイトの他の関連記事を参照してください。

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