複数の英単語を組み合わせたパスワードは覚えやすく強固らしいです( https://xkcd.com/936/ )。
ところで、macOSなどには /usr/share/dict/words
という単語一覧の辞書ファイルがあります。パスワードとして辞書に乗っているような単語を設定できないようにするなどの用途で使われるようです。
今回はその「パスワード使用禁止単語」のファイルを使って複数単語のパスワードを生成するワンライナーを考えてみました。
# bash版
echo $(shuf --random-source=/dev/random -n 4 /usr/share/dict/words) | sed -e 's/ /-/g' | tr '[A-Z]' '[a-z]'
# fish版
echo (shuf --random-source=/dev/random -n 4 /usr/share/dict/words) | sed -e "s/ /-/g" | tr "[A-Z]" "[a-z]"
※ 事前に coreutils
をインストールして shuf
コマンドを使えるようにしておきます。
$ brew install coreutils
alias化
Fish版
echo 'alias pg=\'echo (shuf --random-source=/dev/random -n 4 /usr/share/dict/words) | sed -e "s/ /-/g" | tr "[A-Z]" "[a-z]"\'' >> ~/.config/fish/config.fish
実行例
下記のように4つの単語からなるパスワードが生成されます。
$ pg
aureocasidium-vermis-sellenders-isognathous
$ pg
gutterblood-preallegation-razormaking-unlucky
$ pg
perfectioner-unaggression-scientician-predissolve
その他
-
shuf
コマンドで辞書ファイルから4単語抜き出す際に/dev/random
を指定してよりランダムにしています。 -
sed
やtr
でハイフン区切り&小文字にしています。