Linuxで(一般ユーザーと管理者の両方)強力なパスワードを生成する方法と、これを実行できる特定のプログラムがあるかどうかを知りたいです。
答え1
普遍的な根パスワードを生成するために使用される多くのプログラムの1つです。
答え2
個人的に生成されたパスワードは覚えにくいので、パスワードジェネレータを使用するのは好きではありませんが、ポータブルソリューションを使用することは/dev/urandom
特殊文字を含まず、長さが10文字のランダムなパスワードを作成します。
$ cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10`
dyxJRKldvp
/dev/urandomからバイトを取得し、コマンドで指定されたパターンと一致しないバイトを削除しtr
ますhead
。
特殊文字を含み、長さが10文字の任意のパスワードを作成します。
$ cat /dev/urandom | tr -dc 'a-zA-Z0-9-_!@#$%^&*()_+{}|:<>?=' | fold -w 10 | grep -i '[!@#$%^&*()_+{}|:<>?=]' | head -n 1
MSF4wj@vP0
これは不要なバイトを削除した後、わずかに異なる技術を使用しますtr
。アイデアは、少なくとも1つの特殊文字を持つようにすることです。これは、コマンドを使用してfold
行を10個のグループに分割し、特殊文字を含む行のみを取得するために使用されますgrep
。head
次に、要件を満たす最初のパスワードを取得します。
答え3
私は数年前にこの小さなスクリプトを書いて、それ以来ずっと使い続けてきました。むしろこれはBASHの興味深い誤用printf
であり、残念ながらスクリプトではほとんど見られないBASHの素晴らしい機能を使用しますtypeset
。
#!/usr/bin/env bash
# Released into public domain
# Aaron Bockover, 2005
# http://abock.org
typeset -i length; length=$1
typeset -i rounds; rounds=$2
[ $rounds -lt 1 ] && rounds=1
[ $length -lt 1 ] && {
echo "Usage: $0 <length> [<rounds>]" 2>/dev/null; exit 1;
}
for ((i=0; i < $rounds; i++)); do
for ((j=0; j < $length; j++)); do
set=$(($RANDOM % 20))
if [ $set -le 6 ]; then o=65; l=26; # 35% uppercase
elif [ $set -le 13 ]; then o=97; l=26; # 35% lowercase
elif [ $set -le 17 ]; then o=48; l=10; # 20% numeric
elif [ $set -le 18 ]; then o=58; l=7; # 10% symbolic
elif [ $set -le 19 ]; then o=33; l=15; fi
ord=$(($o + $RANDOM % $l))
printf \\$(($ord / 64 * 100 + $ord % 64 / 8 * 10 + $ord % 8))
done
echo
done
答え4
私も追加しますKeePassXシステムエントロピーを使用してGUIを使用して、いくつかの素晴らしい機能を備えた強力なパスワードを生成するオプションを提供します。また、パスワードを管理し、暗号化されたファイルに保存するオプションも提供します。
KPXパスワードジェネレータインターフェイスは次のとおりです。