알려진 일반 텍스트와 해시로 소금을 계산하시겠습니까?

알려진 일반 텍스트와 해시로 소금을 계산하시겠습니까?

해시를 생성하기 위해 md5 해싱을 사용하는 웹앱에서 사용된 문자열이 있습니다. 나는 또한 해시를 가지고 있습니다. 하지만 문자열의 md5가 해시와 일치하지 않으므로 소금이 관련되어 있는 것 같습니다. 소금을 결정하는 데 도움이 되는 소프트웨어가 있습니까?

답변1

표준 해싱 기능(예: /etc/shadow의 UNIX 비밀번호)에서 솔트는 해시의 일부로 저장됩니다.

저장된 해시 값을 솔트로 전달하면 올바른 결과를 얻을 수 있습니다.

/etc/shadow의 해시된 비밀번호 값은 실제로 $로 구분된 레코드입니다. 예를 들어, 비밀번호 'blarg'의 해시가 있습니다.

$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

$로 구분된 세 개의 필드가 있습니다.

  1. 해시 함수(이 경우 MD5를 나타내는 '1')
  2. 소금('KfcI/JTQ')
  3. 해시 값('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 제목을 자세히 살펴보고 매뉴얼 페이지를 주의 깊게 읽는 것이 좋습니다.

관련 정보