記事の内容
この記事では、ランダムな数値や文字列を生成する方法を紹介します。
rand、random_int、mt_rand、array_rand、str_shuffle、uniqidといった関数を使います。
また、乱数ではありませんがhash値を求める方法も紹介します。
PHPのバージョンは、7系です。
rand関数
rand関数は、乱数を生成する関数です。
ただし、いくつかの注意事項があります。
- PHP7.1.0以降、rand()はmt_rand()のエイリアスなので同じ関数です。
- この関数が生成する値は、暗号学的に安全ではありません
random_int関数
暗号学的に安全な乱数を生成します。
mt_rand関数
mt_rand関数は、乱数を生成する関数です。
ただし、いくつかの注意事項があります。
- PHP7.1.0以降、rand()はmt_rand()のエイリアスなので同じ関数です。
- この関数が生成する値は、暗号学的に安全ではありません
array_rand関数
一つ以上のランダムな値を配列から取り出し、 取り出した値のキーを返します。
引数を指定すれば、複数の値を取り出すこともできます。
str_shuffle関数
文字列をランダムにシャッフルする関数です。
暗号学的に安全ではありません。
uniqid関数
一意なIDを生成します。
ただし、一意なIDを生成することを保証はしません。
一応、引数を指定することで一意性を高めることができます。
暗号学的に安全ではありません。
hash関数
hashとは、ある値を入れた時に生成される文字列です。
ここでは、SHA-256というアルゴリズムを使います。
乱数とは違って、ある値、例えば「a」という値から生成されるhash値は常に同じです。
同様に、「1」という値から生成されるhash値も常に同じです。
hash関数は、パスワードをデータベースに入れる時などに、よく使われます。
複合(元に戻すこと)は事実上、不可能なので暗号化とは別物です。