/ / Як зробити цей генератор паролів генерувати довільну довжину пароля - bash

Як зробити цей генератор паролів створювати випадкові довжини пароля - bash

Я новачок в сценарії Bash і потребує допомоги з цим. У мене є цей скрипт генератора паролів, і він генерує 8 символів довгий пароль. Я намагався змусити його генерувати довільну довжину, але не зміг це зробити. Чи може хто-небудь з баш-скриптами знання дати мені кілька пропозицій про те, як я можу це зробити?

Ось мій скрипт

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

Відповіді:

1 для відповіді № 1

Баш с $RANDOM не може бути використаний для генерації випадкових паролів, тому що це занадто передбачувано.

Щоб створити більш безпечний пароль псевдовипадкової довжини, використовуйте щось на зразок

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

Звичайно, я ціную, що ви просто хочете зробитице для навчальних цілей, але люди, які пізніше Google ", як створювати паролі довільної довжини в басі", не повинні отримувати незахищений алгоритм як їх перший результат.