ランダムな文字列を生成する
なんか一時期はやっていたの?と思ったらそうでもなさそう。三つ目なんか2005年だし。
以前仮パスワードを生成する必要があったときに、以下のようなコードを書いた*1。
// 乱数→md5(バイナリ)→base64→+/を除去→先頭6文字→小文字 strtolower( substr( str_replace( array('+', '/'), '', base64_encode( hash('md5',mt_rand(),true) ) ), 0, 6) );
注意としてはbase64では変換対象のビット数が6の倍数になるように後ろに0のビットを付加するので、変換対象が6の倍数になるようにしないとバランスがおかしくなる*2。
//英数字のみ preg_replace("/[^[:alnum:]]/", "", base64_encode(hash("sha384", mt_rand(),true))); //アルファベットのみ preg_replace("/[^[:alpha:]]/", "", base64_encode(hash("sha384", mt_rand(),true))); //数字のみ preg_replace("/[^[:digit:]]/", "", hash("whirlpool", mt_rand()));