毎回作らなくていいんでは?
手元に /dev/urandom
がない Windows は言うに及ばずですが、Mac でターミナルを使い慣れていても、わざわざ開いてシェルのお世話になるのも面倒だと(私は)思っちゃうんですよね。
なので作りためましょう。
それなりのサイズのファイルを /dev/urandom
で作ります。1024バイトもあれば十分かなーと思います1。
cat /dev/urandom | LANG=C tr -c -d '[:alnum:]' | head -c 1024 > password_pool.txt
最後で fold
に渡すと、指定したサイズで改行できます。
cat /dev/urandom | LANG=C tr -c -d '[:alnum:]' | head -c 1080 | fold -w 72 > password_pool.txt
これをローカルマシンの適当な場所に保存します。あとは必要なときにローカルPCのテキストエディタで開いて、適当な部分からコピペするだけです。
(おさらい) パスワードの作り方
他の記事に書かれているのを含めて、パスワードの作り方のバリエーションをいくつかまとめました。
base64 を使う
よく見かける方法ですね。
cat /dev/urandom | base64 | fold -w 10 | head -n 1
Base64 なので /
と +
が入ってしまいます。
何回か試すと英数だけのものが出るでしょうしそんなに問題ないかもしれませんが、tr
で削ってもよさそうです。
cat /dev/urandom | base64 | tr -d '/+' | fold -w 10 | head -n 1
余談ですが、これは単純化できます2。
base64 /dev/urandom | tr -d '/+' | fold -w 10 | head -n 1
入力ファイルを指定できるのに、なぜ人は /dev/urandom
を cat
する呪縛から離れられないのか?(哲学)
tr を使う
tr
で 使いたくないものを削る 方法です。
……なお tr
は標準入力を対象にするので cat
して pipe しないといけないです……これが呪縛の原因か……。
英数のみの場合
base64 と同じように、英文字と数字だけ出します。
cat /dev/urandom | tr -c -d '[:alnum:]' | head -c 10
うまく行かないときは locale の問題かもしれません3。そのときは以下のように tr
に LC_ALL=C
を加えてみてください。
cat /dev/urandom | LC_ALL=C tr -c -d '[:alnum:]' | head -c 10
英数記号
パスワードの制限で記号を含めないといけない、という場合には使えるかも?4
cat /dev/urandom | tr -c -d '[:graph:]' | head -c 10
その他
[:xxxx:]
は他にもあるので、興味のあるひとは man
を見てみてください。[:punct:]
とかオススメです。試してみて下さい。実用性はまったくないですが!