我需要匹配用户输入的安全性答案和存储在aspnet_Membership表中的安全性答案。 我不想使用resetpassword(“Securityanswer”)方法来验证用户。
有没有办法加密输入的安全性答案或解密存储的安全性答案。
感谢。
答案 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 ..