LoginSignup
12
7

More than 5 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
``
12
7
0

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
  3. You can use dark theme
What you can do with signing up
12
7