我在使用盐哈希密码编写的页面中遇到困难。实际上,代码会生成一个32字节的随机盐,它会添加到输入密码的文本中。然后计算它的散列并存储在表中。然而,当一个人必须登录时,他输入密码的文本用相同的盐加盐,然后用相同的哈希函数进行哈希处理。如果检测到匹配,则授予登录,否则登录被拒绝。我很难实现这一点。
请帮助。我的代码在下面
con.Open();
string salt = SaltF(32);
string Md = @"select Username, SH from SecureUser where Username= @usrn and SH= @sh";
SqlParameter usrname = new SqlParameter();
usrname.ParameterName = "@usrn";
usrname.Value = comboBox1.Text;
SqlParameter Sha = new SqlParameter();
Sha.ParameterName = "@sh";
Sha.Value = SaltHashF(salt, textBox2.Text);
SqlCommand cmdLd = new SqlCommand(Md, con);
cmdLd.Parameters.Add(usrname);
cmdLd.Parameters.Add(Sha);
SqlDataReader dr;
int K = 0;
dr = cmdLd.ExecuteReader();
while(dr.Read())
{
K++;
}
if (K==1)
{
con.Close();
MessageBox.Show("Login Successful", " ", MessageBoxButtons.OK, MessageBoxIcon.Information);
textBox2.Clear();
ChangePasswordPlatform cpp = new ChangePasswordPlatform();
cpp.Tag = this;
cpp.Show(this);
Hide();
}
else
{
MessageBox.Show("Invalid username or password", " ", MessageBoxButtons.OK, MessageBoxIcon.Warning);
textBox2.Clear();
}