conf t

インフラエンジニアのメモ

/dev/urandom と /dev/urandomの違い

パスワードを自動生成したい。

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コマンドの使い方