パスワードを自動生成したい。
WEB上にはパスワード自動生成してくれるサイトとかあるけど、
やっぱり自分の手で作りたいと思ってググったらこんなワンライナーを見つけた
ランダム文字列をたくさん生成する
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 32 | sort | uniq
実行してみると確かに小文字大文字数字が入ったパスワード16桁が生成された!
しかし情けないことにワンライナーの中身が理解できてない...ということで調べてみた
/dev/urandom
linuxに標準であるランダム値生成のツール
/dev/random
は厳密に乱数を生成するツール。
/dev/urandom
はそこまで厳密ではない。という違いらしい
試してみた
# cat /dev/urandom tソZォ?[レス・鉗6セH2>Vコネ・}?・?ワンmθ渼'snj。RwV)・sヲ ハ+N\・m# (省略)
すごい勢いで乱数が生成される。
Ctrl + Cしないといつまでも生成し続けるみたい
じゃあrandomも試してみよう
cat /dev/random 鑞メ8&? cカw!ム^C
え、これで終わり?urandomより全然少ない。
黙って待っているとちょっとづつ出てくるけど、すごい遅い。
randomはエントロピーが溜まるまで待つ。
urandomは溜まってなくても作ってしまう。
ということらしい。(エントロピーって不確かさでしたっけ?)
こんなに遅いんだったら普段使いではurandom使ってしまうな。
逆にrandomのほう使うのってどんな時なのか謎だ
randomの方が解読されないのかもしれないけど、
どの程度違うのかわからないですし
今回は/dev/urandom
の使い方でした。
続き:trコマンドの使い方