/ / jak sprawić, by generator haseł generował losowe hasło - bash

jak sprawić, by generator haseł generował losowe hasło - bash

Jestem nowy w bashowaniu skryptów i potrzebuję pomocy w tym zakresie. Mam ten skrypt generatora haseł i generuje on 8-znakowe hasło. Próbowałem sprawić, by generował losową długość, ale nie mógł tego zrobić. Czy ktoś dysponujący wiedzą z zakresu skryptów bash może mi podpowiedzieć, w jaki sposób mogę to zrobić?

Oto mój skrypt

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)
length=(0 1 2 3 4 5 7 8)
length2=${#length[*]} #${lower[$((RANDOM%length2))])
lower2=${#lower[*]}   #${lower[$((RANDOM%lower2))]}
upper2=${#upper[*]}   #${upper[$((RANDOM%upper2))]}
num2=${#num[*]}     #${num[$((RANDOM%num2))]}
special2=${#special[*]} #${special[$((RANDOM%special2))]}
abc=`#${lower[$((RANDOM%lower2))]}`

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

fi

Odpowiedzi:

1 dla odpowiedzi № 1

Bash $RANDOM nie może być użyty do generowania losowych haseł, ponieważ jest zbyt przewidywalny.

Aby wygenerować bezpieczniejsze hasło o długości pseudolosowej, użyj czegoś podobnego

tr -cd "a-zA-Z0-9@#$^*-+" < /dev/urandom | head -c $((RANDOM % 8 + 16))

Oczywiście doceniam to, że po prostu chcesz to zrobićto do celów edukacyjnych, ale ludzie, którzy później google "jak generować losowe hasła w bashu" nie powinni mieć niebezpiecznego algorytmu jako pierwszego wyniku.