![8~16자의 동적 비밀번호를 만드는 방법](https://linux55.com/image/57207/8~16%EC%9E%90%EC%9D%98%20%EB%8F%99%EC%A0%81%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%A5%BC%20%EB%A7%8C%EB%93%9C%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
이것은 내 비밀번호 생성기입니다. 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
나는 단지 대략적인 가능성을 정리했습니다(그래서 YMMV이지만 적어도 시작점입니다).
head /dev/urandom | tr -cd '[:alnum:]' | tail -c $(( $RANDOM % 8 + 8 ))
문자는 영숫자이므로 tr
문자 세트를 시험해 볼 수 있습니다.
생성된 몇 가지 문자열 예시:
yoXvUVnHG7IIDe
tQGHN7g1rdtbtRO
jsguP1rmJ
CAcoVMK4Ij
KNHVxE8hO
XDkCgx1bN
pijB0Vgx
060qBI9X
LRxp4Ciiab4VCq
tJGYLpof
TVxMPIcjoCKnyA
JYUd4C83TOxr0N
pZaT0lZvNw3oAA
ojtsMD6Ic8E3
UBxtFUY1uy9eT