LoginSignup
6

More than 3 years have passed since last update.

posted at

コマンドでランダムなパスワードを作る

方法

こんな感じで、英数字 と 記号(+ /) 10文字 のパスワードが作れます。
文字数を変えたい場合には fold -w10 を変えてください。

$ cat /dev/urandom | base64 | fold -w 10 | head -n 1
fE2tgSb16u

わたしはaliasできっちゃってます。

.bashrc
alias rand='cat /dev/urandom | base64 | fold -w 10 | head -n 1'
$ rand
fE2tgSb16u

完全にランダムなので英字だけの場合もあったりしますので、数字を含む、や、記号を含む、みたいなパスワードが欲しかったらそれが出てくるまで何回か試してください。

環境

Linux/Unixのbashならたぶん動きます。

Windowsでやりたい方はCygwinかMingwでどうぞ。
わたしはGit for Windowsで入ってくれるgitbashMingw でやってます。

仕組み

一応解説。

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
``

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6