2011-02-04 33 views
0

我需要匹配用户输入的安全答案和存储在aspnet_Membership表中的安全答案。 我不想使用resetpassword(“Securityanswer”)方法来验证用户。Asp.net成员 - 如何明确地匹配安全答案?

有什么办法来加密输入的安全答案或解密存储的安全答案。

谢谢。

回答

1

/转换进入秒ANS以字节数组/

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

/这非常importent转换您的关键基地64串拿到原单hased密码。/

  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) 
0

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

+0

嗨,感谢rply.FormsAuthentication.HashPasswordForStoringInConfigFile接受两个参数。你可以告诉我什么传递参数? – SaurabhR 2011-02-04 12:11:46

1

我知道这是有点老....但我无法得到任何张贴的答案对这个问题的工作,但我通过反复试验想通了,认为“安全答案“的存储方式与存储密码的方式相似(如果您将密码设置为散列)。我可以使用下面的文章的回答有关密码完成上述原题的目标: ASP.NET Membership C# - How to compare existing password/hash

我刚才用的盐从数据库中的密码和它的工作就像一个魅力。希望这可以帮助别人拔出头发好几天。

相关问题