Членство в Asp.net - Как явно сопоставить ответ безопасности?

Мне нужно сопоставить ответ безопасности, введенный пользователем, и ответ безопасности, хранящийся в таблице aspnet_Membership. Я не хочу использовать метод resetpassword ("Securityanswer") для проверки пользователя.

Есть ли способ зашифровать введенный ответ безопасности или расшифровать сохраненный ответ безопасности.

Спасибо.


person SaurabhR    schedule 04.02.2011    source источник


Ответы (3)


/ Преобразовать введенные секунды в байтовый массив /

            Dim bytes As Byte() = Encoding.Unicode.GetBytes(secAns)

/ Это очень важно для преобразования вашего ключа в строку с базой 64 для получения оригинального взломанного пароля. /

            Dim src As Byte() = Convert.FromBase64String(key) 

            /*Concatenate sec ans and hash key*/

            Dim dst As Byte() = New Byte(src.Length + (bytes.Length - 1)) {}

            Buffer.BlockCopy(src, 0, dst, 0, src.Length)
            Buffer.BlockCopy(bytes, 0, dst, src.Length, bytes.Length)

            /*Create algo object for SHA1*/

            Dim algorithm As HashAlgorithm = HashAlgorithm.Create("SHA1")

            /*Compute hash value of concatenated ans and key*/

            Dim inArray As Byte() = algorithm.ComputeHash(dst)

            /*Convert hashed ans back to string*/

            Dim hashedAns As String = Convert.ToBase64String(inArray)
person SaurabhR    schedule 08.02.2011

Я знаю, что это что-то старое .... Но я не смог заставить работать ни один из опубликованных ответов на этот вопрос, но методом проб и ошибок я понял, что «ответ безопасности» сохраняется аналогично тому, как пароль хранится (если у вас установлен пароль на хэш). Я смог использовать следующий ответ о паролях для достижения цели вышеуказанного исходного вопроса: Членство в ASP.NET C # - Как сравнить существующий пароль / хэш

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

person Rootberg    schedule 22.08.2012

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

person manishKungwani    schedule 04.02.2011
comment
Привет, спасибо за rply.FormsAuthentication.HashPasswordForStoringInConfigFile принимает два параметра. Не могли бы вы сказать мне, что передать в качестве параметров? - person SaurabhR; 04.02.2011
comment
Первый параметр - это пароль, который вы хотите хэшировать, а второй - метод хеширования, который вы хотите использовать. более подробную информацию можно найти по адресу: msdn.microsoft .com / en-us / library / Если вы найдете ответ полезным, отметьте его как ответ. :) - person manishKungwani; 04.02.2011