как расшифровать строку - PullRequest
       7

как расшифровать строку

6 голосов
/ 31 октября 2009

Как восстановить значение строки после использования FormsAuthentication.HashPasswordForStoringInConfigFile ()

у меня есть строка s1 = "abc", тогда

FormsAuthentication.HashPasswordForStoringInConfigFile (s1, "SHA1") = A9993E364706816ABA3E25717850C26C9CD0D89D

Как мне расшифровать "A9993E364706816ABA3E25717850C26C9CD0D89D" обратно в "abc" ??

Ответы [ 2 ]

19 голосов
/ 31 октября 2009

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

13 голосов
/ 31 октября 2009

Исходя из ответа Багета. Причина, по которой вы хэшируете пароли, заключается в том, что вам не нужно хранить незашифрованный пароль для аутентификации.
Вместо этого вы храните хэш пароля.
Ваш процесс аутентификации / входа в систему становится примерно таким:

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

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

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

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

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

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

MD5 считается сломанным
SHA1 также считается сломанным

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

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