C# FormsAuthentication.HashPasswordForStoringInConfigFile返回不同的字符串

C# FormsAuthentication.HashPasswordForStoringInConfigFile返回不同的字符串,c#,asp.net,hash,sha1,C#,Asp.net,Hash,Sha1,我正在做一个登录页面,使用SHA1对输入的密码进行哈希运算。我生成盐串。将密码添加到生成的salt字符串中,然后对其进行哈希运算 这就是我注册时存储值的方式。我只存储用户名、哈希密码和字符串 string saltString = retSaltString();//This returns a salt string string password = txtPassword.Text; string saltPassword = password + saltString; string h

我正在做一个登录页面,使用SHA1对输入的密码进行哈希运算。我生成盐串。将密码添加到生成的salt字符串中,然后对其进行哈希运算

这就是我注册时存储值的方式。我只存储用户名、哈希密码和字符串

string saltString = retSaltString();//This returns a salt string
string password = txtPassword.Text;
string saltPassword = password + saltString;
string hashPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(saltPassword, "SHA1");
当我对用户进行身份验证时,我会反向执行相同的操作:

string hashedPassword = //from database
string saltString = //from database
string saltPassword = txtPassword.Text + saltString;
string hashEnterPassword =   
FormsAuthentication.HashPasswordForStoringInConfigFile(saltPassword, "SHA1");

但是这次hashEnterPassword不同,即使是有效密码,登录也会失败。为什么散列会生成不同的字符串?我在4.5中开始了这个项目,因为它说它不再支持SHA1,所以我把它改为4.0。我哪里做错了?提前感谢。

从这段代码来看,
saltString
看起来像个嫌疑犯。您确定盐的生成/存储/检索机制工作正常吗?我会首先确认这一点,甚至我也开始在这些方面工作。但当我调试时,在db中注册和存储时检索到的值与登录时检索到的值是相同的