方法
こんな感じで、英数字 と 記号(+ /) 10文字 のパスワードが作れます。
文字数を変えたい場合には fold -w
の 10
を変えてください。
$ cat /dev/urandom | base64 | fold -w 10 | head -n 1
fE2tgSb16u
わたしはalias
できっちゃってます。
alias rand='cat /dev/urandom | base64 | fold -w 10 | head -n 1'
$ rand
fE2tgSb16u
完全にランダムなので英字だけの場合もあったりしますので、数字を含む、や、記号を含む、みたいなパスワードが欲しかったらそれが出てくるまで何回か試してください。
環境
Linux/Unixのbashならたぶん動きます。
Windowsでやりたい方はCygwinかMingwでどうぞ。
わたしはGit for Windows
で入ってくれるgitbash
≒ Mingw
でやってます。
仕組み
一応解説。
cat /dev/urandom
とすることで /dev/urandom
という疑似デバイスを使った乱数を発生させます。 別に /dev/random
でもいいです。 このコマンドだけうつとコンソールが乱数データでいっぱいになりますので、やってビックリしみてください。。Ctrl+Cをたくさんうてば止まります。
$ cat /dev/urandom
............(自粛)................
次に、base64
コマンドで乱数データ(バイナリデータ)をそれっぽい英数字記号、つまり、文字に置き換えます。ここがちょっとポイントで Base64
にしているので使われる文字種類が、a~z A~Z 0~9 + / です。このコマンドでのパスワードはこれら文字種で作られます。 もっと記号とか増やしたかったら base64
ではない方法にするとか、+
がいやだったら最後に sed
とかで置換してもいいです。
ここまででこんな感じ。
$ cat /dev/urandom | base64
XsnBKARwMwwOJpT5uFJKKIpepSaX5y0FVDnsNy3OyYWJ3nFdOqG+kBtEEUJXGIYWyOkKn4WYBhF5
bz5gXB3GHGOtNge6sIVINsWdz10VMcZ8WnKjS74/+zlP/qNQ+kMKGrteDYGp7q3PtdPioDry+M0P
INMddrMYmoMU0/fns1HPZppw//GPCd9y8PlmoUJZXlXMpY7X+WqAPCyFvZoXWdxTU70KAR70hTZB
94vyTA149XK2d0Ekntfop+zefSH3WDPMf0S9ewzPK0t60O5lAY3VQEPIUllRc6HVnTSwGgmIcRW4
:
次に、fold -w 10
で10文字区切りでテキストを改行します。 fold
は指定した文字数で改行してくれるコマンドです。 もしパスワードを8文字にしたければ -w 8
とかにしてください。 base64
コマンド自体がデフォルトで 76文字 で改行されるので、76文字 以上のパスワードにするときはご注意ください(ない?)。。もししたかったら base64 -w 0
で改行しないようになど考えてみてください。。。
$ cat /dev/urandom | base64 | fold -w 10
NGcxhgAFjZ
sYKBzoEqTW
q8abDGE9Pq
gfwXXBAFf1
wx2KHzc4yo
fxvBNoAHdL
Lab8DZRKSA
1/o2we
:
最後に、先頭の1行を取得することで完成です。
$ cat /dev/random | base64 | fold -w 10 | head -n 1
BOJKAO1Lis
``