암호를 해시하는 데 사용되는 해시 알고리즘을 찾는 방법은 무엇입니까? 찾을 때까지 다른

작동 암호가 있으며 해시 (/ etc / passwd)를 볼 수 있습니다. 일치하는 것을 찾을 때까지 다른 알고리즘을 수동으로 시도하지 않고 암호를 해시하는 데 사용되는 해시 알고리즘을 어떻게 찾을 수 있습니까?



답변

이 설명되어 crypt(3)의 맨 페이지를 찾을 수있는 을 통해 shadow(5)S 맨 ‘ , 또는 passwd(5)‘의 . 이러한 링크는 최신 Linux 기반 시스템에 적합합니다. 설명이 있습니다 :

경우 소금이 “$ 문자로 시작하는 문자열입니다 아이디 선택적으로”$ “로 종료 문자열 다음에 $가”, 결과의 형식은 다음과 같습니다

$id$salt$encrypted

id 는 DES 대신 사용 된 암호화 방법을 식별 한 다음 나머지 비밀번호 문자열을 해석하는 방법을 결정합니다. 다음과 같은 id 값이 지원됩니다.

ID  | Method
─────────────────────────────────────────────────────────
1   | MD5
2a  | Blowfish (not in mainline glibc; added in some
    | Linux distributions)
5   | SHA-256 (since glibc 2.7)
6   | SHA-512 (since glibc 2.7)

또한으로 알려진 복어는, bcrypt또한 접두사에 의해 식별됩니다 2, 2b, 2x,과 2y(참조 PassLib의 설명서를 ).

따라서 해시 된 비밀번호가 위의 형식으로 저장된 경우 id 를보고 사용 된 알고리즘을 찾을 수 있습니다 . 그렇지 않은 경우 crypt기본 DES 알고리즘 (13 자 해시 포함) 또는 “big” cryptDES (128 자 암호 지원, 최대 178 자 해시 길이로 확장) 또는 BSDI 확장 DES ( _접두사 포함) 뒤에 19 자 해시).

일부 배포판은 libxcrypt 를 사용하여 훨씬 더 많은 방법 을 지원하고 문서화 합니다.

  • y
  • gy: gost-yescrypt
  • 7: 암호화
  • sha1: sha1crypt
  • md5: SunMD5

다른 플랫폼은 다른 알고리즘을 지원하므로 crypt맨 페이지를 확인하십시오 . 예를 들어 OpenBSDcrypt(3)ID “2b”를 사용하여 식별하는 Blowfish 만 지원합니다 .


답변