コマンドラインでランダムな文字列を生成する
FuelPHPとかSymfony2が触りたいのに何故かCakePHPをやってるぱせらです。
んで、こういうフレームワークはセキュリティ用のsaltとかが初期状態だと「ちゃんと設定してね」みたいなメッセージが出るようになってるので書き換えなきゃいけないんだけど、適当にキーボードがちゃがちゃやるのは問題外として、ハッシュ関数やBase64はなんとなくそれっぽく見えちゃうので、こんな感じで生成してみた。
# 英数40桁 cat /dev/urandom | tr -dc '[:alnum:]' | head -c 40 # 数字29桁 cat /dev/urandom | tr -dc '[:digit:]' | head -c 29
上の例はCakePHPのcore.phpに初期設定されてるやつに合わせてみた*1けど、文字種とか文字数とか自由に決められていい感じ。
あとこんな感じで一気に生成できたりするのも楽しい。
$ cat /dev/urandom | tr -dc '[:graph:]' | fold -w 8 | grep '[:punct:]' | head -n 5 #n;%[A@2 AttFfb7, i4/R>3pu JcfA}s#k $)E+:.VX $ cat /dev/urandom | tr -dc 'a-zA-Z0-9_!@#$%&+-' | fold -w 8 | grep -i '[_!@#$%&+-]' | head -n 5 dE_MGw63 soL2@DoG 04rlu4_S sL+lh&82 +QiG2Dxh
2012-07-22追記
OS Xとかで"tr: Illegal byte sequence"とか怒られちゃう場合は、trの前にLC_CTYPE=Cをつけてあげるといいかも。
$ cat /dev/urandom | tr -dc '[:alnum:]' | head -c 40 tr: Illegal byte sequence $ cat /dev/urandom | LC_CTYPE=C tr -dc '[:alnum:]' | head -c 40 zec3tqT24y9PxEetepzca82mSYAOEvVpbfFuHYuQ
参考
*1:Security.cipherSeedのほうは"digits only"って書かれてるので。