Asp.net会员 - 如何明确地匹配安全性答案?

时间:2011-02-04 11:47:19

标签: asp.net-membership

我需要匹配用户输入的安全性答案和存储在aspnet_Membership表中的安全性答案。 我不想使用resetpassword(“Securityanswer”)方法来验证用户。

有没有办法加密输入的安全性答案或解密存储的安全性答案。

感谢。

3 个答案:

答案 0 :(得分:1)

/ 将输入的sec ans转换为字节数组 /

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

/ 将您的密钥转换为base 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)

答案 1 :(得分:1)

我知道这有点旧....但是我无法得到这个问题的任何已发布的答案,但我通过反复试验得知,“安全答案”的存储类似于如何存储密码(如果密码设置为哈希)。我能够使用以下帖子关于密码的答案来完成上述原始问题的目标: ASP.NET Membership C# - How to compare existing password/hash

我只是在数据库中使用了密码中的盐,它就像一个魅力。希望这可以帮助别人拔掉头发好几天。

答案 2 :(得分:0)

无法解密存储在成员资格表中的安全答案。 您可以散列收到的答案,然后将其与存储在数据库中的散列值进行比较。 为此使用 FormsAuthentication.HashPasswordForStoringInConfigFile ..