Linux (Ubuntu) / etc / shadow에 저장된 해시 (ASCII) 코드가 궁금합니다.
가상의 경우를 고려하여 password는 'test' , salt는 'Zem197T4'으로 지정하십시오 .
다음 명령을 실행하여
$ mkpasswd -m SHA-512 test Zem197T4
일련의 긴 ASCII 문자가 생성됩니다 (실제로 Linux가 / etc / shadow에 저장하는 방법).
$6$Zem197T4$oCUr0iMuvRJnMqk3FFi72KWuLAcKU.ydjfMvuXAHgpzNtijJFrGv80tifR1ySJWsb4sdPJqxzCLwUFkX6FKVZ0
온라인 SHA-512 생성기 (예 : http://www.insidepro.com/hashes.php?lang=eng )를 사용할 때 생성되는 것은 아래와 같은 16 진수 코드입니다.
옵션 1) 암호 + 솔트
8d4b73598280019ef818e44eb4493c661b871bf758663d52907c762f649fe3355f698ccabb3b0c59e44f1f6db06ef4690c16a2682382617c6121925082613fe2
옵션 2) salt + password
b0197333c018b3b26856473296fcb8637c4f58ab7f4ee2d6868919162fa6a61c8ba93824019aa158e62ccf611c829026b168fc4bf90b2e6b63c0f617198006c2
나는이 16 진 코드가 mkpasswd에 의해 생성 된 ASCII 코드와 '같은 것'이어야한다고 생각합니다. 그러나 그들은 어떻게 관련되어 있습니까?
누군가가 나를 깨달을 수 있기를 바랍니다.
우분투에서 / 데비안 mkpasswd
은 whois 패키지의 일부이며 mkpasswd.c
실제로 crypt()
glibc에서 선언 된 함수를 둘러싼 정교한 래퍼처럼 구현 되었습니다 unistd.h
. crypt ()는 두 개의 인수 암호와 솔트를 사용합니다. 이 경우 암호는 "test"이고, SHA-512 해시 ( SHA-crypt 참조)에 대해 salt 앞에 "$ 6 $"가 추가 되므로 "$ 6 $ Zem197T4"가 crypt ()에 전달됩니다.
라운드 수를 결정 하는 -R
옵션 을 눈치 챘을 것 mkpasswd
입니다. 문서에서 기본값은 5000 라운드입니다. 이것은 결과가 솔트와 암호의 단순한 연결과 결코 같지 않은 첫 번째 힌트이며 한 번만 해시되지 않습니다. 실제로 통과 -R 5000
하면 동일한 결과를 얻습니다. 이 경우 "$ 6 $ rounds = 5000 $ Zem197T4"는 crypt ()에 전달되고 glibc (Debian / Ubuntu의 libc)의 구현은 여기에서 메서드와 라운드 수를 추출합니다.
crypt () 내부에서 일어나는 일은 단일 해시를 계산하는 것보다 더 복잡하며 결과는 결국 base64로 인코딩됩니다. 이것이 보여준 결과에 SHA-512 해시의 일반적인 16 진수 문자열에서와 같이 [0-9a-f]뿐만 아니라 마지막 '$'뒤에 모든 종류의 문자가 포함 된 이유입니다. 알고리즘은 이미 언급 된 SHA-Crypt 문서 에 자세히 설명되어 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다