Мне нужно получить пароль, который хэшируется в ASP.net - PullRequest
0 голосов
/ 10 ноября 2008

Я храню все свои пароли в хешированном виде. Мне нужно восстановить эти пароли Например,

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

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

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

Ответы [ 8 ]

14 голосов
/ 10 ноября 2008

Это невозможно. SHA1, очень тщательно и сознательно, является односторонней функцией .

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

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

3 голосов
/ 10 ноября 2008

Две интересные статьи на эту тему: Возможно, вы неправильно храните пароли и Взлом Rainbow Hash ...

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

3 голосов
/ 10 ноября 2008

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

Некоторые ссылки для чтения:

3 голосов
/ 10 ноября 2008

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

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

2 голосов
/ 10 ноября 2008

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

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

И вам следует держаться подальше от разработки такого сайта самостоятельно; -)

1 голос
/ 10 ноября 2008

Если вы не используете salt , то вы можете взломать пароли, используя словарную атаку .

РЕДАКТИРОВАТЬ: я понимаю, его первоначальный вопрос заключается в том, как восстановить пароль он сохранил , но мне забавно предоставить решение более общего вопроса, подразумеваемого заголовком вопроса.

0 голосов
/ 10 ноября 2008

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

0 голосов
/ 10 ноября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...