Есть файл /etc/shadow с паролями пользователей от почтового сервера. Зашифрованы они все с MD5 (имеют $1$ в начале). Пытался гуглить но так и не нашел как же образуется символьная строка шифрованного пароля из хэша MD5, а нужно эти пароли переделать в нормальный MD5 дайджест чтобы использовать их в базе данных mySQL (планирую использовать функцию MD5()). Посоветуйте что-нибудь дельное по этому поводу, заранее спасибо!!!
>с MD5 (имеют $1$ в начале). Пытался гуглить но так и
>не нашел как же образуется символьная строка шифрованного пароля из хэшаman 5 shadow
man 3 crypt
>>с MD5 (имеют $1$ в начале). Пытался гуглить но так и
>>не нашел как же образуется символьная строка шифрованного пароля из хэша
>
>man 5 shadow
>man 3 cryptВот не люблю таких людей которые думаю что другие не знают о наличии man'ов. Вы сами то пробовали открывать эти маны? Увидели там что-нибудь конкретное? Узнали как из строки $1$сольадальшекрокозябра сделать 16 байт md5 хэша? Так вот, нечего тогда давать такие ответы...
>>>с MD5 (имеют $1$ в начале). Пытался гуглить но так и
>>>не нашел как же образуется символьная строка шифрованного пароля из хэша
>>
>>man 5 shadow
>>man 3 crypt
>
>Вот не люблю таких людей которые думаю что другие не знают о
>наличии man'ов. Вы сами то пробовали открывать эти маны? Увидели там
>что-нибудь конкретное? Узнали как из строки $1$сольадальшекрокозябра сделать 16 байт md5
>хэша? Так вот, нечего тогда давать такие ответы...Что за истерика? Там очень даже понятно все написано. Я именно оттуда и понял, что есмь salt, и где сам хеш. Естественно нужно еще почитать что такое salt, и что такое собственно хеш.
>[оверквотинг удален]
>>>man 3 crypt
>>
>>Вот не люблю таких людей которые думаю что другие не знают о
>>наличии man'ов. Вы сами то пробовали открывать эти маны? Увидели там
>>что-нибудь конкретное? Узнали как из строки $1$сольадальшекрокозябра сделать 16 байт md5
>>хэша? Так вот, нечего тогда давать такие ответы...
>
>Что за истерика? Там очень даже понятно все написано. Я именно оттуда
>и понял, что есмь salt, и где сам хеш. Естественно нужно
>еще почитать что такое salt, и что такое собственно хеш.Маны это конечно хорошо, но как я и говорил в них по этому поводу конкретного ничего нету. Для тех кто не понял уточню проблему: есть пароли вида $1$+salt+hash , известно что хэш получен на основе алгоритма md5. Задача получить из строки hash, которая здесь не является md5 хэшем, 16 байт хэша md5. Т.е. меня интересует алгоритм, с помощью которого создается строка hash, методы преобразования строки hash до 16 байт md5. Сразу скажу, для тех кто хочет написать "Кури исходники crypt", я их обязательно покурю, если здесь никто не ответит, ведь, я думаю, кто-нибудь уже сталкивался с данной траблой...
Ну из man 3 crypt вы могли бы почерпнуть принцип работы crypt, особенно роль salt, и понять, что задача по переносу в другое приложение, не использующее salt, изначально обречена на провал.
>Ну из man 3 crypt вы могли бы почерпнуть принцип работы crypt,
>особенно роль salt, и понять, что задача по переносу в другое
>приложение, не использующее salt, изначально обречена на провал.((( Дайте мне стену я буду биться об нее головой! Что вы со мной так как будто я не читал ман, ЧИТАЛ я его и в ПЕРВУЮ ОЧЕРЕДЬ, про salt все прекрасно знаю и понимаю принципы его работы, с md5 тоже дело имел, как то даже оптимизированную библиотеку на ассемблере делал реализующую этот алгоритм. Использование для проверки пароля пользователя в БД mySQL возможно самый простой пример:
SELECT 1 FROM access WHERE user='%u' AND hash=MD5(CONCAT('%p', salt));Вопрос в следующем: возможно ли из строки хэша в файле /etc/shadow получить md5 hash, который возможно бы было использовать для проверки пароля подобным образом (как в примере) и есть ли у кого-нибудь описание алгоритма делающего такое преобразование, или хотя бы описание алгоритма как вычисляется этот hash.
Ну тогда смотрите исходники crypt так как реализации могут различаться и всем программам рекомендуется вызывать системную библиотеку, а не пытаться сделать что-то самостоятельно. Если нужна проверка в мускуле, то воспользуйтесь encrypt она использует системный crypt и получите те же хеши, аналогично для проверки существующих
select encrypt('plain','$1$salt');
+--------------------------------+
| encrypt('plain','$1$salt') |
+--------------------------------+
| $1$salt$hNT0h3u4/siQo8dZQu7Ll. |
+--------------------------------+select encrypt('plain','$1$salt$hNT0h3u4/siQo8dZQu7Ll.');
+---------------------------------------------------+
| encrypt('plain','$1$salt$hNT0h3u4/siQo8dZQu7Ll.') |
+---------------------------------------------------+
| $1$salt$hNT0h3u4/siQo8dZQu7Ll. |
+---------------------------------------------------+Ну и наконец чисто перловая (за исключением собственно Digest::MD5) реализация алгоритма системного md5 crypt
http://cpansearch.perl.org/src/LUISMUNOZ/Crypt-PasswdMD5-1.3...
Из нее можно увидеть какое количество преобразований делается помимо вызова md5 хеширования.
>[оверквотинг удален]
>+---------------------------------------------------+
>| $1$salt$hNT0h3u4/siQo8dZQu7Ll.
> |
>+---------------------------------------------------+
>
>Ну и наконец чисто перловая (за исключением собственно Digest::MD5) реализация алгоритма системного
>md5 crypt
>http://cpansearch.perl.org/src/LUISMUNOZ/Crypt-PasswdMD5-1.3...
>Из нее можно увидеть какое количество преобразований делается помимо вызова md5 хеширования.
>Спасибо за ответ, angra! На функцию encrypt() я уже заглядывался, вот только не мог получить ту же шифрованную строку что и в shadow, но по Вашему ответу я все понял. Еще раз спасибо!
>[оверквотинг удален]
>+---------------------------------------------------+
>| $1$salt$hNT0h3u4/siQo8dZQu7Ll.
> |
>+---------------------------------------------------+
>
>Ну и наконец чисто перловая (за исключением собственно Digest::MD5) реализация алгоритма системного
>md5 crypt
>http://cpansearch.perl.org/src/LUISMUNOZ/Crypt-PasswdMD5-1.3...
>Из нее можно увидеть какое количество преобразований делается помимо вызова md5 хеширования.
>умничка! +10.
PS а за такую постановку вопроса и развитие темы я бы автора на месте пристрелил.
>PS а за такую постановку вопроса и развитие темы я бы автора
>на месте пристрелил.Согласен (((
может уже поздна и я устал - но помоему вы херню несете ))
какая в зопу разница как представлен хеш - с сальтом или без, это хеш и чтобы получить в другом виде нужен оригинальный плейн текст