Solaris 서버에서 10자의 임의 비밀번호를 생성하려고 합니다. 웹에 제공된 예는 Linux용이며 대부분은 Solaris용이 아닙니다.
답변1
에서 암호화 품질의 임의 바이트를 얻을 수 있습니다 /dev/urandom
. (Solaris 9부터 존재했습니다. Linux에도 존재합니다.) 여기에는 인쇄할 수 없는 문자가 포함되어 있으므로 제거해야 합니다. 다음 명령은 공백이 아닌 인쇄 가능한 무작위 ASCII 문자 10개를 추출합니다.
</dev/urandom tr -dc '!-~' | dd ibs=1 obs=1 count=10
비밀번호에 특수 문자를 사용하지 않는 것이 좋습니다. 비밀번호를 더 안전하게 만들지는 않습니다. 비밀번호의 보안은 엔트로피에 있습니다. 10자 비밀번호의 엔트로피는 10×log 2 (94) ≒ 65.5비트입니다. 9개의 임의 바이트에서 동일한 양의 엔트로피를 얻고 이를 원하는 대로 인코딩할 수 있습니다(예: 16진수).
</dev/urandom dd ibs=1 obs=1 count=9 | od -tx1 -An | tr -d ' '
또는 더 짧은 Base64로 사용됩니다.
</dev/urandom dd ibs=1 obs=1 count=9 | uuencode -m - | sed -n 2p
엄격한 제약이 있는 경우 "비밀번호는 적어도 하나의 특수 문자를 포함해야 합니다"(이것은 비밀번호를 만드는 데 문제가 있는 방법입니다)평범한 사람들이 선택한더 안전하고 무작위로 생성된 비밀번호가 완전히 잘못된 경우) 필요한 클래스의 문자가 포함되지 않을 가능성이 있으므로 무작위 비밀번호를 사용할 수 없습니다. 제한 사항을 충족하지 않는 비밀번호를 거부하면줄이다비밀번호 보안. 대신 비밀번호를 더 길게 만드세요.
</dev/urandom dd ibs=1 obs=1 count=9 | uuencode -m - | sed '2!d; s/$/-Aa1/'
비밀번호를 기억해야 한다면 이는 또 다른 문제입니다. 기억하기 가장 쉬운 비밀번호는암호.
답변2
Solaris에 Perl이 있으면 다음과 같은 도움이 됩니다.
perl -e 'print[0..9,a..z,A..Z]->[rand 62]for 1..10'
특수 문자의 경우 다음과 같습니다.
perl -e 'print [0..9,a..z,A..Z,qw{- _ / & ?}]->[rand 67]for 0..10'