2008-11-10 2 views
0

Я сохраняю все свои пароли в форме хэшированной. Мне нужно получить эти пароли НапримерМне нужно получить пароль, который Hashed в ASP.net

Мой пароль: «123456» Я сохраняю это как хешированное значение «3453474852dfdsfdsfdf».

Мне нужно получить исходный пароль из хешированного значения. (Получить пароль).

Как это сделать? Я использую алгоритм хэширования SHA1.

ответ

3

Две интересные статьи по теме: You're Probably Storing Passwords Incorrectly и Rainbow Hash Cracking ...

Так что все зависит от того, что вы собираетесь делать (хранилище паролей безопасно или хранить пароль для пользователей на сайте и т.д.). Для прежнего использования вы можете посмотреть, как работает KeePass (это с открытым исходным кодом).

14

Это невозможно. SHA1, очень тщательно и преднамеренно, one-way function.

Почему вы пытаетесь восстановить первоначальный пароль? Он не нужен для аутентификации, потому что вы просто вводите пароль ввода и сравниваете значения хэша.

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

3

Вы не можете. Точка hash function (в отличие от encryption) состоит в том, что это в одностороннем порядке. Другими словами, может быть несколько паролей, хэш которых имеет одинаковое значение, и нет пути перехода от хэша к исходному паролю.

Это полезно, поскольку вам не нужен какой-либо «главный пароль» или другой секрет, который требуется для двустороннего шифрования, но это означает, что вы никогда не сможете вернуть исходный пароль из хеширования стоимость. Если вам действительно нужен пароль, вам придется использовать шифрование/дешифрование вместо хэширования.

3

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

Некоторые ссылки для вас, чтобы читать:

1

Если вы не используете salt, то вы могли бы разорвать пароли с помощью dictionary attack.

EDIT: Я понимаю, что его первоначальный вопрос заключается в том, как получить пароль , он хранит, но мне интересно, как обеспечить решение более общего вопроса, подразумеваемого заголовком вопроса.

2

Вы не можете, для этого нужны хеши. Из-за этого на многих сайтах есть опция сбрасывать пароль (т. Е. Вводить в db хэш нового пароля, который вы указали). Обычно вы не можете найти , чтобы получить текущий пароль (т. Е. Отправив его по почте).

Если веб-сайт предлагает эту функциональность, это означает, что они не, хранящие хэши паролей, но и незашифрованные или зашифрованные пароли.Поскольку сохранение хэша является наилучшей практикой, вы должны избегать выбора из сайта, предлагающего поиск пароля.

И вы должны держаться подальше от developping такой сайт самостоятельно ;-)

0

Теоретически вы не можете, как уже упоминали другие комментарии.

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

Но ответ на ваш вопрос: нет, вы не можете сделать это легко.

+0

Не, если хэш «солен». Это сильно затрудняет использование словарей грубой силы (предполагая, что злоумышленник не знает соль). – 2008-11-10 09:39:42

0

Не значит быть грубым здесь, но вы действительно понимаете, почему вы вначале хешировали пароли?

Смежные вопросы