임의의 문자열을 생성하는 방법은 무엇입니까?

임의의 문자열을 생성하는 방법은 무엇입니까?

임의의 문자열(예: 비밀번호, 사용자 이름 등)을 생성하고 싶습니다. 원하는 길이(예: 13자)를 지정할 수 있어야 합니다.

어떤 도구를 사용할 수 있나요?

(보안 및 개인정보 보호를 위해 웹사이트에서 온라인으로 문자열을 생성하는 것보다 오프라인으로 문자열을 생성하는 것이 좋습니다.)

답변1

내가 가장 좋아하는 방법은 원하지 않는 문자를 사용 /dev/urandom하고 tr제거하는 것입니다. 예를 들어, 숫자와 문자만 얻으려면:

tr -dc A-Za-z0-9 </dev/urandom | head -c 13; echo

아니면,포함하다더 많은 캐릭터OWASP 비밀번호 특수문자 목록:

tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 13; echo

tr입력에 대해 불만이 있는 경우,추가해 보세요LC_ALL=C이와 같이:

LC_ALL=C tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c 13; echo

tr더 읽기 쉬운 그래픽 문자 클래스도 있습니다. 이를 C로케일로 제한하면 위의 명시적 문자 목록과 동일한 유형의 출력이 생성됩니다.

LC_ALL=C tr -dc '[:graph:]' </dev/urandom | head -c 13; echo

답변2

나는 openssl암호화의 스위스 군용 칼인 명령을 사용하고 있습니다.

openssl rand -base64 12

또는

openssl rand -hex 12

답변3

임의의 비밀번호를 생성하려면 다음을 사용할 수 있습니다.pwgen:

pwgen무작위로 의미는 없지만 발음 가능한 비밀번호를 생성하세요. 이러한 비밀번호에는 소문자, 대소문자 혼합 또는 숫자만 포함됩니다. 대문자와 숫자는 단어만 외울 때에도 위치를 기억하기 쉽도록 배치되어 있습니다.

길이가 13인 비밀번호 7개를 생성합니다.

geek@liv-inspiron:~$ pwgen 13 7
Eu7Teadiphaec giepahl3Oyaiy iecoo9Aetaib4 phaiChae6Eivi athoo3igee8Co
Iphu4ufeDeelo aesoYi2lie9he 

-s설명에서 언급했듯이 매개변수를 사용하면 엔트로피 감소(즉, 더 안전하고 완전히 무작위이지만 기억하기 어려운 비밀번호 생성)를 피할 수 있습니다 .

geek@liv-inspiron:~$ pwgen -s 13 7
eAfycrPlM4cYv 4MRXmZmyIVNBp D8y71iqjG7Zq7 FQRHcserl4R8O yRCUtPtV3dsqV
0vJpp2h0OrgF1 QTp7MKtJyTrjz 

brew사용자 의 경우 다음을 참조하세요.여기.


임의의 사용자 이름을 생성하려면 다음을 사용할 수 있습니다.gpw:

이 패키지는 발음 가능한 비밀번호를 생성합니다. 입력한 사전에서 가져온 트라이그램(세 글자)에 대한 통계를 사용합니다.

길이가 13인 7개의 비밀번호(사용자 이름)를 생성합니다.

geek@liv-inspiron:~$ gpw 7 13
sreepoidahsas
risadiestinge
ntodynesssine
deodstestress
natinglumperm
riasigentspir
enderiferback

답변4

이를 수행하는 방법은 다음과 같습니다. 그것이 제가 하는 일입니다. 10자의 무작위 문자열을 생성합니다. "fold"를 다른 문자열 처리 도구로 대체하여 최적화할 수 있습니다.

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 1

관련 정보