任意の文字列(パスワード、ユーザー名など)を生成したいと思います。希望の長さ(13文字など)を指定できる必要があります。
どのツールを使用できますか?
(セキュリティとプライバシーのために、ウェブサイトでオンラインで文字列を生成するのではなく、オフラインで文字列を生成する方がよいでしょう。)
答え1
私の好きな方法は、望ましくない文字を使用し/dev/urandom
てtr
削除することです。たとえば、数字と文字のみを取得するには:
tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo
または、含むより多くのキャラクターOWASPパスワード特殊文字リスト:
tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 13; echo
tr
入力について不満がある場合、追加してみてくださいLC_ALL=C
このように:
LC_ALL=C tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 13; echo
tr
より読みやすいグラフィック文字クラスもあります。これをC
ロケールに制限すると、上記の明示的な文字リストと同じタイプの出力が生成されます。
LC_ALL=C tr -dc '[:graph:]' </dev/urandom | head -c 13; echo
答え2
私はopenssl
暗号のスイス軍用剣であるコマンドを使用しています。
openssl rand -base64 12
または
openssl rand -hex 12
答え3
任意のパスワードを生成するには、次のものを使用できます。pwgen
:
pwgen
ランダムに意味はありませんが、発音可能なパスワードを生成してください。これらのパスワードには、小文字、大文字と小文字の混合、または数字のみが含まれます。大文字と数字は、単語だけを覚えても位置を覚えやすいように配置されています。
長さ13のパスワード7つを生成します。
geek@liv-inspiron:~$ pwgen 13 7
Eu7Teadiphaec giepahl3Oyaiy iecoo9Aetaib4 phaiChae6Eivi athoo3igee8Co
Iphu4ufeDeelo aesoYi2lie9he
-s
説明で述べたように、パラメータを使用すると、エントロピーの減少(つまり、より安全で完全にランダムですが覚えにくいパスワードの生成)を回避できます。
geek@liv-inspiron:~$ pwgen -s 13 7
eAfycrPlM4cYv 4MRXmZmyIVNBp D8y71iqjG7Zq7 FQRHcserl4R8O yRCUtPtV3dsqV
0vJpp2h0OrgF1 QTp7MKtJyTrjz
brew
ユーザーの場合は、次を参照してください。ここ。
任意のユーザー名を生成するには、次のものを使用できます。gpw
:
このパッケージは発音可能なパスワードを生成します。入力した辞書から取得したトライグラム(3文字)の統計を使用します。
長さ13の7つのパスワード(ユーザー名)を生成します。
geek@liv-inspiron:~$ gpw 7 13
sreepoidahsas
risadiestinge
ntodynesssine
deodstestress
natinglumperm
riasigentspir
enderiferback
答え4
これを行う方法は次のとおりです。それが私がすることです。 10文字のランダムな文字列を生成します。 "fold"を他の文字列処理ツールに置き換えることで最適化できます。
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1