
해시를 생성하기 위해 md5 해싱을 사용하는 웹앱에서 사용된 문자열이 있습니다. 나는 또한 해시를 가지고 있습니다. 하지만 문자열의 md5가 해시와 일치하지 않으므로 소금이 관련되어 있는 것 같습니다. 소금을 결정하는 데 도움이 되는 소프트웨어가 있습니까?
답변1
표준 해싱 기능(예: /etc/shadow의 UNIX 비밀번호)에서 솔트는 해시의 일부로 저장됩니다.
저장된 해시 값을 솔트로 전달하면 올바른 결과를 얻을 수 있습니다.
/etc/shadow의 해시된 비밀번호 값은 실제로 $로 구분된 레코드입니다. 예를 들어, 비밀번호 'blarg'의 해시가 있습니다.
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
$로 구분된 세 개의 필드가 있습니다.
- 해시 함수(이 경우 MD5를 나타내는 '1')
- 소금('KfcI/JTQ')
- 해시 값('b5VTf4i9Mnf6QFgLuVZNM0')
mkpasswd를 여러 번 사용하면 해시가 변경됩니다.
$ mkpasswd -m md5 blarg
$1$Gst52IWk$8ARVeSlpkcZOlyKV10Slu/
$ mkpasswd -m md5 blarg
$1$JeqRviA/$GnH/AvGnZEG9wLfJjiaAt1
그러나 위의 해시 값에서 솔트(즉, 두 번째 필드)를 전달하면 이를 원래 해시와 일치시킬 수 있습니다.
$ mkpasswd -m md5 -S KfcI/JTQ blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
전체 비밀번호 해시를 전달할 수도 있습니다(해시 기능은 생략하더라도).
$ mkpasswd -m md5 -S KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0 blarg
$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0
Linux에서는 /etc/login.defs에서 해시 유형을 제어할 수 있습니다. 이를 변경할 때 매우 주의하십시오. 시스템에서 완전히 잠길 수 있습니다. MD5_CRYPT_ENAB 및 ENCRYPT_METHOD 제목을 자세히 살펴보고 매뉴얼 페이지를 주의 깊게 읽는 것이 좋습니다.