Linux에서 강력한 비밀번호를 만드는 방법은 무엇입니까?

Linux에서 강력한 비밀번호를 만드는 방법은 무엇입니까?

Linux에서 (일반 사용자와 관리자 모두) 강력한 비밀번호를 생성하는 방법과 이를 수행할 수 있는 특정 프로그램이 있는지 알고 싶습니다.

답변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. 아이디어는 적어도 하나의 특수 문자를 갖도록 하는 것입니다. 이는 명령을 사용하여 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 비밀번호 생성기 인터페이스는 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

관련 정보