Восстановление пароля с хешированием паролей sha1

Я хочу реализовать на своем веб-сайте функцию забытого пароля. Я хэширую пароли с помощью sha1. Как мне восстановить это для пользователя?

Какой лучший способ реализовать это?


person BigMike    schedule 26.10.2010    source источник


Ответы (3)


Короткий ответ, нельзя.

Вы хотите реализовать функцию сброса пароля, а не функцию восстановления пароля. Весь смысл хеширования паролей заключается в том, что вы не можете хранить пароль пользователя и не можете восстановить его, если он потерян.

Это должно дать вам общее представление о как разрешить пользователям сбрасывать забытые пароли:

person meagar    schedule 26.10.2010
comment
Мало того, что он не может этого сделать. точнее, он не должен этого делать. в противном случае хеширование было бы бесполезным по определению. - person ITroubs; 26.10.2010
comment
Штопать. Мне следовало пойти на короткий ответ :) - person Cameron Skinner; 26.10.2010
comment
Спасибо за это. Так что сбросить пароль имеет смысл. Спасибо! - person BigMike; 27.10.2010

Лучший способ - не пытаться восстановить исходный пароль. Если пользователь теряет свой пароль, создайте новый случайный пароль и используйте внеполосный метод для его отправки (например, по электронной почте). Помните, что весь смысл хеширования пароля - предотвратить восстановление.

Я знаю, знаю, что электронная почта небезопасна. Но если вы требуете от пользователей немедленного изменения сгенерированного пароля, риск снижается.

Между прочим, я не могу рекомендовать достаточно, чтобы вы также солили пароль и повторяли хэш, чтобы предотвратить атаки грубой силы в случае, если злоумышленник получит хешированное значение.

person Cameron Skinner    schedule 26.10.2010

НЕТ

Не существует известного эффективного способа вернуть хэш sha1 к исходному тексту (так как это односторонняя функция по замыслу). Если вы хотите иметь возможность показывать пользователям их пароль позже, вы должны сохранить его в обратимом методе (шифрование IE, открытый текст). Это все еще, вероятно, плохая идея, попробуйте найти лучший способ сделать это.

person Kendall Hopkins    schedule 26.10.2010
comment
Какой неэффективный способ вернуть хэш sha1? :) - person George Johnston; 26.10.2010
comment
@George Rainbow Tables довольно хорошо работает с короткими простыми паролями, но если хеш имеет соленый оттенок или содержит символы, вы, вероятно, не сможете его отменить. - person Kendall Hopkins; 26.10.2010
comment
Грубая сила. Прокрутите все возможные строки текста, хешируйте каждую, сравните с сохраненным хешем. Время выполнения растет экспоненциально с увеличением максимальной длины строки. 5 знаков (букв и цифр) - это предел практичности. - person Seva Alekseyev; 26.10.2010
comment
Благодарим за отправку запроса на восстановление пароля. Вам будет отправлено письмо с вашим паролем примерно через 35 лет. - person George Johnston; 26.10.2010