8から16の間の任意の長さのパスワードを生成する(生成器はあるが動的ではない)

8から16の間の任意の長さのパスワードを生成する(生成器はあるが動的ではない)

これは私のパスワードジェネレータです。 8文字を作成して混合します。しかし、動的長さにする必要があります。どうすればいいですか?したがって、出力の長さは8から16文字です。

if [ $# -eq 0 ]; then
num=("0" "1" "2" "3" "4" "5" "7" "8" "9")
special=("@" "#" "$" "%" "*" "-" "+")
upper=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
lower=(a b c d e f g h i j k l m n o p q r s t u v w x y z)
lower2=${#lower[*]}   #${lower[$((RANDOM%lower2))]}
upper2=${#upper[*]}   #${upper[$((RANDOM%upper2))]}
num2=${#num[*]}     #${num[$((RANDOM%num2))]}
special2=${#special[*]} #${special[$((RANDOM%special2))]}

echo "${special[$((RANDOM%special2))]}${num[$((RANDOM%num2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}${lower[$((RANDOM%lower2))]}${upper[$((RANDOM%upper2))]}" | fold -w 1 | shuf | tr -d '\n'
echo
fi

ベストアンサー1

置く

len=$((8+RANDOM%9))

次に、$len密接に関連した質問に対する回答として提供したものと同じフレームワークを使用して文字を生成します。このパスワードジェネレータで1つの特殊文字のみを生成する方法質問、

word=
for ((i=0; i<len; i++))
do
    thischar=(Generate one character by whatever logic you like)
    word="$word$thischar"
done
echo "$word"

あなたの好みに合った文字グループを配布できるように個々の文字を生成する方法を決定します。これはあなたの質問の範囲外であり、あなたの要件を作成することに関連しています(例:あなたの問題)あなたのため。

おすすめ記事