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

я есть требование дешифровать зашифрованные (не хешированные) пароли, расположенные в моей таблице aspnet_Membership. В этой базе данных я вижу поля Password (Encrypted) и PasswordSalt, и я могу просмотреть свой web.config, чтобы найти machinekey> decryptionKey (validation = "SHA1" decryption = "AES").

примечание: я хотел бы использовать хешированный пароль, но по деловым причинам мне нужно иметь возможность использовать пароль для члена, для единого входа в другие удаленные системы и из них, следовательно, используя Encrypted (определенно, НЕ используя Clear - yukky!)

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

Я нашелMembershipProvider.DecryptPassword Метод страницы, но я все еще не могу понять, как на самом деле использовать это в моем коде. Я также нашел другие страницы через Google, но большинство примеров расшифровки пароля, похоже, не учитывают соли и decrytionKey.

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