Data Science fwdays сonference — few-shot learning, snorkel, black box and more! Kyiv, Sep 7

PHP.Раскодировка

Всем привет! Вот у мня появилась такая проблемма.

Есть фишка такого типа:

base64_encode (pack ( «H*», sha1 (utf8_encode ($password:);

Кодируется password и заносится в БД, но это не важно.

Если кодировать, например «DyadyaVasya» выходит например «ARyUXzDOLLr8RS85hA8CVpMznEI=»

Как расшифровать, собственно, «ARyUXzDOLLr8RS85hA8CVpMznEI=» обратно в «ДядяВася»???

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Пожалуйста.

Вполне обычная идея.

Пароль новый сгенерировать, выслать на мыло, после подтверждения пользователем заменить пароль в бд.

Ну, а Если типчиг забыл пароль? Как мне его расшифровать и отправить ему на мыло? Не отправлять же мне его в зашифрованом виде!

Перебирать пароли и сверять хеши с исходным и надеяться на удачу (что это займет разумное время). Можно наверное использовать какие то готовые проги, для перебора по словарю, когда то John The Ripper был популярен. Однозначного обратного преобразования из множества хешей SHA1 в множество паролей не существует.

Йуный хацкерок решил чего-нибудь сломать:)

Закрывайте тему.

Ну тогда не парте мозги. Пароли, как видно, захешированы дабы всякие умники не смогли ими воспользоваться — стандартная процедура кстати.

Kot, нет, у меня не такая задача, я не пишу приложения.
Вот есть клиент-серверная игра, Lineage. Она именно таким методом и сверяет пароли.
Да, вот слил БД, но там же все в этом дерьме и пароли зашифрованы...

p.s.Действительно, хорошо продуманная криптовка...)

А зачем декодировать-то? У вас, вероятно, задача пропосутить пользваотеля если он ввел правильный пароль — делаете такое же кодирование и сверяете получиышиеся строки в БД. Стандартная логика. В этом-то и смысл — никто кроме пользователя пароля не знает, но можно всегда сказать правильный он или нет.

Я не пыхапист не разу, но смотря на этот код сдается мне что назад значение «ARyUXzDOLLr8RS85hA8CVpMznEI=» вы уже не переведете так как вначале используется хеш функция sha1 (). Нет в теории конечно можно пытыться найти обрутную функцию хешу, но дело это очень неблагодарное и затратное. А что касается base64 так это просто схема кодирования/декодирования (в основном бинарного потока) в/из печатные ASCII символы. В java например для этого есть класс Base64 с соответствующими методами encode/decode.

PS А вообще пароли не хорошо взламывать:)

Подписаться на комментарии