PINコード(数字のみ)を生成する

暗証番号やPINコードに使えるような、指定された桁数のランダムな整数値を生成したいのである。

英数記号を用いたパスワード文字列の自動生成については知見があるのだが、「数字のみ」という条件が付いた途端に、「あれ? そういえば、どう生成すればよいのかなあ?」とつまづいてしまったのである。

パスワード文字列の生成ではpwgen(1)を愛用している。他のツールを探すのも面倒なので、pwgen(1)で何とかできないだろうか?

man(1)を見ながら検討した結果、手元のpwgen 2.08ではこんな感じで数字のみのパスワードを生成することに成功した。

# 6桁のPINコードを1つ生成する場合:
pwgen -A -r abcdefghijklmnopqrstuvwxyz -s 6 1

オプション-Aを指定して英大文字を除外した上で、オプション-rを使って英小文字を除外している。オプション-yを指定しなければ、記号文字は使われない。消去法で、残された有効文字は数字のみとなる。

他にもっとスマートなツールが存在するはずだが、とりあえず個人的に使う分にはこんなもので十分だろう。

終わりに

最終的には、こんな感じになった。

https://github.com/eel3/eel3-scripts/blob/master/bin/genpin