Rajini.Y Ответов: 3

Расшифровка зашифрованного пароля


Привет..
Я храню зашифрованный пароль с помощью хэш-метода в базе данных. Возможно ли это или есть способ расшифровать его?Потому что я должен отправить расшифрованный пароль в другое текстовое поле..
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strPassword, ConfigurationManager.AppSettings("HashMethod"))

3 Ответов

Рейтинг:
9

Prasad_Kulkarni

Ну АФАИК, вы не можете перевернуть хэшированную строку-алгоритм разработан так, что это невозможно.

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

Вот как вы можете проверить введенную пользователем таблицу

SELECT password_field FROM mytable WHERE password_field=pwdencrypt(userEnteredValue)


Sergey Alexandrovich Kryukov

Более точная крачка "неосуществима" - пожалуйста, смотрите мой ответ и ссылочную статью. (На этот раз я проголосовал за 4.)
--СА

Рейтинг:
23

OriginalGriff

Нет.

Хеширование-это не шифрование.
Большая разница в том, что Encrytpion может быть обращен вспять. Хеширование не может - в этом весь смысл использования алгоритма хеширования для хранения паролей.

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


Sergey Alexandrovich Kryukov

Конечно, 5. Мы ответили почти одновременно...
--СА

Рейтинг:
12

Sergey Alexandrovich Kryukov

Ааааа!!! Только не снова! Я не понимаю, что не так с авторами всех подобных вопросов по хэшу (или паролям).

То криптографическая хэш-функция не предназначен для "расшифровки"!

Это один путь функция. Реверсирование его (поиск значения аргумента по изображению) - это невыполнимый Когда используется криптографическая хэш-функция, такое реверсирование (назовите его "расшифровкой", не имеет значения) является никогда не понадобиться; как раз наоборот: это требуемый чтобы сделать его неосуществимым.

Пожалуйста, смотрите:
http://en.wikipedia.org/wiki/Cryptographic_hash_function[^].

Если вам нужно шифрование и дешифрование, используйте алгоритмы шифрования.

[Правка #1]

Ах, это связано с паролями?! Пожалуйста, подумайте хорошенько: почему вы думаете, что "расшифровка" может когда-либо понадобиться для аутентификации или любой другой цели, связанной с паролем? Он никогда не нужен, потому что вам никогда не нужно хранить пароль. Идея настолько очевидна: вы храните только хэш-функцию пароля, вычисляете тот же хэш во время аутентификации и сравниваете хэш с хэшем. Никогда пароль с паролем. Таким образом, только один человек в мире знает свой собственный пароль. Это было бы так плохо, если бы кто-то еще знал. Разве это не разумно и не просто?

[Правка #2]

Пожалуйста, смотрите также мой недавний ответ: хранение паролей int значение SQL-сервера в защищенном режиме[^].

[Редактировать #3]

Что касается алгоритмов шифрования, то с.Нет у вас есть достойный выбор:
http://msdn.microsoft.com/en-us/library/system.security.cryptography.asymmetricalgorithm[^],
http://msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm[^].

Для паролей я бы все же рекомендовал криптографические хэш-функции, как я уже объяснял.

Вау,

—СА