У меня есть строка, которая использовалась в веб-приложении с хешированием md5 для предложения хеша. У меня также есть хеш. Но md5 строки не соответствует хешу, таким образом, я предполагаю, что существует включенная соль. Есть ли какое-либо программное обеспечение, которое может помочь мне определить соль?
В стандартных хеш-функциях (например, пароли UNIX в/etc/shadow) соль хранится как часть хеша.
Передайте сохраненное значение хэш-функции как соль, и необходимо получить корректный результат.
Хешированное значение пароля в/etc/shadow является на самом деле $ разграниченная запись. Например, у нас есть этот хеш пароля 'blarg':
$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.