конвертировать простой текстовый пароль в соленый хеш MD5 - PullRequest
2 голосов
/ 11 декабря 2011

Например, в FreeBSD пароли хранятся в /etc/master.passwd следующим образом:

$1$7wtGfwgp$772bEQInetnJKUNtLM0Xt/

Я использовал пароль «Test11». Как я понимаю, $ 1 $ означает, что это хешированный MD5-крипт? Как можно получить окончательный хэш "772bEQInetnJKUNtLM0Xt /", если он знает о соли и пароле и использует md5sum? Как я понимаю, это должно быть что-то вроде:

$ echo -n $(echo -n 7wtGfwgp)$(echo -n Test11) | md5sum

.. но это не совсем совпадает. Что я делаю не так?

PS Я спрашиваю это, чтобы понять систему хеширования паролей в UNIX-подобных операционных системах.

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

Я нахожусь в Linux, и я не уверен, использует ли FreeBSD тот же самый алгоритм, но вы можете взглянуть на эти источники информации (надеюсь, то же самое относится и к FreeBSD):

На основе последней страницы этот PHP-скрипт выдаст ожидаемый результат (учитывая ваш пароль и соль):

<?php
$password = 'Test11';
$salt = '$1$7wtGfwgp$';
echo 'Crypt hash: ' . crypt($password, $salt) . "\n"
?>

Вы можете сделать то же самое, используя, например, Python:

import crypt

password = 'Test11'
salt = '$1$7wtGfwgp$'
print(crypt.crypt(password, salt))

на основе этой страницы документа Python:

Основано на статье Википедии:

Вы можете увидеть источник функции crypt, например. здесь:

В качестве дополнительного примечания, вот хороший онлайн-генератор хешей:

Надеюсь, это поможет.

0 голосов
/ 17 января 2014

Хеширование и шифрование - это нечто иное, даже если хеширование является частью шифрования;)

Так что, если вы хотите зашифровать его, делайте это, как в сообщении icyrock.md5sum (gmd5sum в freebsd coreutils) создает только хэш-сумму (RFC 1321) для некоторого ввода.Он не использует этот хеш для шифрования на следующем шаге, как это делают (несколько) кодов шифрования.

Вот почему ваш код дает вам нечто совершенно иное в результате.

...