次のコマンドで、比較的多くの環境でさまざまな目的に利用可能な長さ32のパスワードを生成することができます。
base64 /dev/urandom | tr -d -c '[:alnum:]' | head -c 32
特徴
- 32文字のランダムな文字列を生成します。
- 生成する文字列長は最後の
-c 32
で指定しています。もっと長い文字列が必要な場合、これを増やしてください。
- 生成する文字列長は最後の
- 生成されるパスワードはアルファベットと数字のみで構成されているので、多くの用途に簡単に利用できます。
- 62文字種で32桁あると、記号を含めた93文字種で29桁と同等かそれ以上の情報量があります。
-
/dev/urandom
を使っているので、暗号学的に安全な乱数をもとにしたパスワードが生成されます。- 「でも urandom は PRNG だよね?」と気になる人は代わりに
/dev/random
を使ってください(環境によっては/dev/random
も PRNG の場合があります)。
- 「でも urandom は PRNG だよね?」と気になる人は代わりに
- 利用コマンドは coreutils 付属のコマンドのみなので、幅広い環境で利用できます。
他の選択肢
この方法以外では、次のような選択肢があります。
-
base64 /dev/urandom
の代わりにopenssl rand -base64
を使う1。 openssl も多くの環境でデフォルトで使えるコマンドです。 -
apg
を使う2。文字列長や利用文字クラスを細かく指定できます。「発音しやすいパスワード」なども生成可能。- homebrew をはじめ、各種OS環境のパッケージマネージャによりインストールが可能ですが、現在はあまりメンテされていないようです。
-
pwgen
を使う3。使ったことがありませんが、現代的には apg よりもこちらのほうがメジャーなようです。 - 各種プログラミング言語でプログラムを書く
- /dev/urandom からランダムなバイト列を取り出し、それを好みの文字集合に一様にマップしてやればOKです。