2

У меня есть строка, которая использовалась в веб-приложении с хэшированием md5 для создания хэша. У меня также есть хэш. Но md5 строки не соответствует хешу, поэтому я предполагаю, что в этом есть соль. Есть какое-нибудь программное обеспечение, которое может помочь мне определить соль?

1 ответ1

1

В стандартных функциях хеширования (например, пароли UNIX в /etc /shadow) соль сохраняется как часть хеша.

Передайте сохраненное значение хеша как соль, и вы должны получить правильный результат.

Значение хешированного пароля в /etc /shadow на самом деле является записью с разделителями $. Например, у нас есть этот хэш пароля «blarg»:

$1$KfcI/JTQ$b5VTf4i9Mnf6QFgLuVZNM0

Есть три поля, разделенные $, которые

  1. Хеш-функция (в данном случае '1', представляющая MD5)
  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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .