random_bytes
(PHP 7)
random_bytes — 暗号論的に安全な、疑似ランダムなバイト列を生成する
説明
random_bytes
( int $length
) : string
ソルトやキーや初期化ベクトルのような、暗号化の用途に合った、 暗号論的にランダムなバイト列を任意の長さの文字列として生成します。
この関数が使う不規則性のソースはつぎのとおりです。
- Windows では、常に » CryptGenRandom() を使います。PHP 7.2.0 以降は、常に » CNG-API を使うようになりました。
- Linux では、システムコール » getrandom(2) があればそれを使います。
- その他のプラットフォームでは、
/dev/urandom
を使います。 - これらがいずれも使えない場合は、 Exception をスローします。
注意:
この関数は PHP 7.0 で追加されたものですが、PHP 5.2 から 5.6 までのバージョンで使える » ユーザーランドの実装 も公開されています。
パラメータ
length
- 返すべきランダムな文字列の長さをバイト単位で指定します。
返り値
暗号論的に安全なランダムなバイト列を含んだ文字列を返します。
エラー / 例外
- 適切な不規則性のソースが見つからない場合は Exception をスローします。
- 無効なパラメータが指定された場合は TypeError をスローします。
- 不正な
length
が指定されると、 Error がスローされます。
例
例1 random_bytes() の例
<?php$bytes = random_bytes(5);var_dump(bin2hex($bytes));?>
上の例の出力は、 たとえば以下のようになります。
string(10) "385e33f741"
参考
- random_int() - 暗号論的に安全な疑似乱数を生成する
- openssl_random_pseudo_bytes() - 疑似ランダムなバイト文字列を生成する
- bin2hex() - バイナリのデータを16進表現に変換する