テキトーな値がほしい
PHPでフレームワークを使おうとすると大体のフレームワークで
セキュリティー用のtokenを用意してください
みたいな項目が出てくる.
キーボードをガチャガチャ鳴らして用意するのも問題ないけど,
大文字が無かったり,キーボードの配置的に偏ったりするのがなんとなく嫌.
あと,何文字打ってるか分かりづらいのも難点.
ってことで簡単にランダムな文字列作れないかな〜と思って探してみた.
そんなパスワード生成用のコマンドもあった気がしたけど毎回インストールされている訳じゃないので
できるだけデフォルト装備のコマンドが望ましい...
って調べて出てきたのが次のサイト
10 Ways to Generate a Random Password from the Command Line
http://www.howtogeek.com/howto/30184/10-ways-to-generate-a-random-password-from-the-command-line/
メッセージのチェックを行うsha256sum等を使ったり,base64を使って変換した値をランダム値として活用したり,/dev/urandom という擬似デバイスから文字列を取ってきて tr コマンドで欲しい文字タイプのみに整形するのが一般的なよう.
たった一つの「指定文字数を切り出す」という処理が色々な方法で書かれているのがなかなか面白いw
特徴として
- sha256sum や md5sum などは16進数で表された計算値なので0-9a-zの値のみになる のでレパートリー少なめ
- base64は + や / といった記号も出てくるし色々な文字列が大文字小文字どちらも現れる けど末尾が必ず =
- /dev/urandom はtrコマンド次第で好きに使われている文字や記号等を決める事ができる けどコマンドが長くて面倒くさくなる
といった感じ.
今日はここらへんで
ちょっと追記
これが楽なんでね?
md5sum とか sha256sum は[0-9a-f]だけだからなんとなく心もとない
/dev/urandom だとなんだか長くなりがちだし,自分でコマンドを組もうにも仕組みをあまり理解できてないから四苦八苦しそう (さっき適当に試してみようとしたらターミナルに文字がアホみたいに出力されて慌ててたり ^^; )
base64 だといい感じのができそうだけど,実際は文字列の変換なだけでランダムな文字列を生成するのは苦手
ってな感じで一長一短...
まぁサイトみた限りシンプルだったのは
$ date | md5sum
ここはsha256sumとかにも変えられるし,1秒違うだけでも結構変わるのでオススメ.
そこをもっといい感じの文字列にしたければ
$ date | md5sum | base64
とすればok
md5sum の仕様上末尾に必ず ' -' って文字列がくっつくから base64の文字列も固定になるけどそこはあまり気にしなくても問題無いだろうし
ちなみに base64 には -w
オプションがあって,改行する文字数を指定できたりするのでそこで文字数調整も可能だったり.
自分で考えたつもりが,気づけばサイトの一番上のと同じになってたのは秘密.
そんな感じで