強度チェック付きパスワードジェネレータ

30分プログラム、その127。強度チェック付きのパスワードジェネレータ。

自分で作るのは面倒というか不安だったので、apgcracklibを使っている。

apgなのは、こいつが生成するPronounceable Password(発音可能なパスワード,英単語っぽいけど英単語じゃないパスワード)が気にいっているので。

使い方

$ mkpwd -t
yephpeyWau      (yeph-pey-Wau)  OK
idtusyaxim      (id-tus-yax-im) OK
konBikuf        (kon-Bik-uf)    it is based on a dictionary word
ZygIdvaud       (Zyg-Id-vaud)   OK
fulikWau        (ful-ik-Wau)    OK
LegHainyud      (Leg-Hain-yud)  OK

また、apg元々のオプションも使える

$ mkpwd -n 2
Scabvadba               OK
RofNolkOk2              OK

ソースコード

ああ、cracklib-checkが標準入力からパスワードを読みとる形式じゃなかったら、もっとシンプルに書けるのに。

#!/opt/local/bin/ruby

def check(passwd)
  `echo '#{passwd}' | cracklib-check`.split(':',2)[1].strip
end

`apg #{ARGV}`.each{|line|
  passwd,*xs = line.split
  print passwd,"\t",xs.join("\t"),"\t",check(passwd),"\n"
}