ランダムな文字列の生成

uniqid(string $prefix = “”, bool $more_entropy = false): string

マイクロ秒単位の現在時刻にもとづいた、接頭辞つきの一意な ID を取得します。
この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。
返される文字列は prefix + 13 文字となります。
more_entropyがtrueの場合はprefix + 23文字

mt_rand(): int
mt_rand(int $min, int $max): int

メルセンヌ・ツイスター乱数生成器を介して乱数値を生成する。
この関数が生成する値は、暗号学的に安全ではありません。そのため、これを暗号として使ってはいけません。暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。
オプションの引数 min,max を付けずに コールした場合、mt_rand() は 0 から mt_getrandmax() の間の擬似乱数値を返します。 例えば、5 から 15 まで(端点を含む)の間の乱数値を得たい場合には mt_rand(5, 15) としてください。
負数も指定可能。

mt_getrandmax(): int

mt_rand() のコールにより返される最大の値を返します。

random_int(int $min, int $max): int

暗号論的に安全な疑似乱数を生成する。
負数も指定可能。
mt_rand()と違い引数なしは不可。

戻り値
min と max の範囲で、暗号学的に安全なランダムな整数値を返します (min と max を含みます)

random_bytes(int $length): string

暗号論的に安全な、疑似ランダムなバイト列を生成する。
length 返すべきランダムな文字列の長さをバイト単位で指定します。

$bytes = random_bytes(5);
//16進数に変換
var_dump(bin2hex($bytes));

//CSRF対策のトークンを作成する
 $token = bin2hex(random_bytes(16));

openssl_random_pseudo_bytes(int $length, bool &$strong_result = null): string

疑似ランダムなバイト文字列を生成する。 長さは length パラメータで指定します。

strong_result
任意の変数。
これを渡しておくと、使ったアルゴリズムが暗号学的に強いものであるかどうかを表す bool 値が格納されます。「強い」とは、 GPG やパスワードなどに使っても安全であるという意味です。強い場合は true、そうでない場合は false となります。

$bytes = openssl_random_pseudo_bytes(8, $cstrong);
$hex   = bin2hex($bytes);

var_dump($hex);
var_dump($cstrong);

//string(16) "f216bbdc1f725146"
//bool(true)

参考記事

暗号化