- 1. 概要
- 2. 最大・最小
- 3. 最大・最小
- 4. 乱数
1. 概要
数学関数の詳細は「PHP マニュアル - 関数リファレンス - 数学」をご参照ください。
2. 変換
「PHP: hexdec - Manual」をご参照ください。
hexdec(string $hex_string): int|float
は、16進値を表す文字列を、10進値へ変換します。
print(hexdec('10'));
と書けば、下記のように出力されます。
164857659097122
3. 最大・最小
「PHP: max - Manual」「PHP: min - Manual」参照。
最大値・最小値を求めるには
max(mixed $value, mixed ...$values): mixed
min(mixed $value, mixed ...$values): mixed
を使用します。
引数は1つ以上であればいくらでも?
引数が配列であれば、配列の中で一番大きいもの・小さいものを取得するようです。
4. 乱数
もっともお手軽なのは
rand(): int
rand(int $min, int $max): int
です。「PHP: rand - Manual」参照。
下の例の場合、生成する乱数の最小値、最大値を指定しています。
指定していない場合は、最小値が 0 で、最大値が「getrandmax())」の値だそうです。
ただ、これで生成する乱数は、「暗号学的に安全」ではないそうです。
「暗号学的に安全な値が必要な場合は、random_int() か random_bytes() あるいは openssl_random_pseudo_bytes() を使いましょう。」と書いてあります。
同様に「暗号学的に安全」ではないそうですが、「メルセンヌ・ツイスター乱数生成器を介して乱数値を生成する」(← 意味は理解していません)関数があります。
「PHP: mt_rand - Manual」参照。
mt_rand(): int
mt_rand(int $min, int $max): int
使用方法は、「rand」と同様なのですが、「既知の乱数生成器 » メルセンヌ・ツイスター を使用し、 平均的な libc の rand()よりも 4 倍以上高速に乱数を生成します。」だそうです。
「csrf」対策のキーを自動的に生成する方法として(「【PHP入門】ランダムな数値・文字列を生成する(rand、mt_rand)」を参考に)
$csrf = '';
for ($i=0; $i<40; $i++)
{
switch (mt_rand(1, 10))
{
case 1:
case 2:
case 3:
case 4:
$csrf .= chr(mt_rand(ord('A'), ord('Z')));
break;
case 5:
case 6:
case 7:
case 8:
$csrf .= chr(mt_rand(ord('a'), ord('z')));
break;
default:
$csrf .= chr(mt_rand(ord('0'), ord('9')));
break;
}
}
print($csrf);
と書けば、下記のように出力されます。
(当然、実行ごとに結果は変わります)
3Y58RJAuSJByqjqEiyWyeW7kw7SMVrOHhvDCTj0Y
これで生成した「$csrf」は、「csrf」対策のキーとして使えるはずです(未検証)。
|
        |