Unix에 문제가 있어서 smd5에 많은 비밀번호를 생성해야 하지만 일부 Unix 도구나 Perl을 사용하여 {smd5}DoZgZ.OE$vSg4ZH7Bpy0BCdXNzBj001 형식으로 smd5 비밀번호를 생성하는 방법을 모릅니다.
openssl과 같은 도구를 사용하여 Linux의 md5/sha256/sha512에서 아무것도 생성하는 데 문제가 발생한 적이 없습니다.
나는 다음과 같은 것을 사용하여 Perl을 사용해 보았습니다.
use Digest::MD5;
use MIME::Base64;
$ctx = Digest::MD5->new;
$ctx->add('vwkfA17aF`');
$salt = 'DoZgZ.OE';
$ctx->add($salt);
$hashedPasswd = '{smd5}' . encode_base64($ctx->digest . $salt ,'');
print $hashedPasswd . "\n";
하지만 불행하게도 출력은 완전히 다릅니다. {smd5}5zJphaZULO3gnT1pwT1YHERvWmdaLk9F 보이지 않습니다.소금여기와 같아요 {smd5}많은 ZgZ$vSg4ZH7Bpy0BCdXNzBj001 및 문자열이 더 깁니다.
답변1
AIX {smd5}
형식은 비표준 형식입니다. 이것은 작은 변형입니다.*BSD/리눅스/솔라리스 "MD5"(이는 에 의해 생성됩니다 openssl passwd -1
). 나는 그것에 대해 많은 정보를 찾을 수 없습니다. 에 기여한 코드가 있습니다.존 더 리퍼(점보 버전 1.8.0에 있음) 파일에서 계산aix_smd5_fmt_plug.c
. 코드를 읽어보면 차이점은 BSD MD5 변형이 $1$
솔트의 한 위치에 문자열을 효과적으로 추가하는 반면 AIX 변형은 그렇지 않다는 점인 것 같습니다. C를 알고 있다면 OpenSSL을 패치하여 이 변형을 지원하는 것이 그리 어렵지 않을 것입니다.
편집을 통해 AIX에서 사용하는 알고리즘을 변경할 수 있습니다./etc/security/pwdalg.cfg
lpa_options = std_hash=true
섹션에 해당 줄을 추가합니다 smd5:
. 일반적인 방법은 사용하는 것입니다chsec
주문하다:
chsec -f /etc/security/pwdalg.cfg -s md5 -a std_hash=true
내가 이해한 바에 따르면 이는 비표준 알고리즘을 사용하여 기록된 비밀번호를 무효화합니다.
LDAP 솔티드 MD5는 느리지 않기 때문에 좋은 비밀번호 해시가 아닙니다.비밀번호를 안전하게 해시하는 방법은 무엇입니까?이것이 무엇을 의미하는지 설명됩니다. BSD 및 AIX "MD5" 알고리즘은 느립니다(이상적으로는 느리지만 느리지 않은 알고리즘보다 훨씬 좋습니다).