Я пытаюсь сделать простой знак на части приложения, которое я создаю.Чтобы подтвердить вход, я просто пытаюсь убедиться, что значение хэша введенного пароля совпадает с тем, которое хранится в моей локальной базе данных: App_Users ) '
ButtonClick:
string AppUsername = textBox2.Text.ToString();
string AppPassword = textBox1.Text.ToString();
//- Hashed-V-
byte[] salt;
new RNGCryptoServiceProvider().GetBytes(salt = new byte[16]);
var pbkdf2 = new Rfc2898DeriveBytes(AppPassword, salt, 10000);
byte[] hash = pbkdf2.GetBytes(20);
byte[] hashBytes = new byte[36];
Array.Copy(salt, 0, hashBytes, 0, 16);
Array.Copy(hash, 0, hashBytes, 16, 20);
string savedPasswordHash = Convert.ToBase64String(hashBytes); // <-- see ' /3751242/kak-heshirovat-parol ' for the part on comparing the recalculated
//-
SqlConnection con = new SqlConnection();
con.ConnectionString = ("Data Source=DESKTOP-PGHMM6M;Initial Catalog=LocalUsers;Integrated Security=True");
con.Open();
var cmd = new SqlCommand(@"SELECT Username, Hash FROM App_Users WHERE (Hash = @Hash");
cmd.Connection = con;
savedPasswordHash = cmd.ExecuteScalar() as string;
if (cmd.ExecuteNonQuery() > 0) {
MessageBox.Show(" Query successful..something matched.. ");
//change page.. load a profile?
}
Однако я получаю сообщение об ошибке:
'Must declare the scalar variable "@Hash".'
Я искал вокруг, но я не уверен, что следующий шаг для именно того, что я пытаюсь сделать, это ..Извините, это, вероятно, плохой вопрос.Я думаю, это как-то связано с адаптером?