private void buOK_Click(object sender, EventArgs e) { if (edNewPassword.Text == edRepeatPassword.Text) { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Open(); string password = edNewPassword.Text; // генерируем соль string saltGen = GenerateIdentifier(30); //Генерируем хэш в соответствии с SHA-512 на основе введенного пользователем // пароля и сгенерированной соли. string hash = SHAHash.ComputeSHAHash(password, saltGen); // fmUser user = (fmUser)this.Owner; ((fmUser)this.Owner).usalt = saltGen; ((fmUser)this.Owner).uhash = hash; //занесение в базу данных /* string UpdateCmd = "update users set salt = @salt, password = @hash where id = @id;"; * * using (NpgsqlCommand command = new NpgsqlCommand(UpdateCmd, conn)) * { * command.Parameters.AddWithValue("salt", saltGen); * command.Parameters.AddWithValue("hash", hash); * command.Parameters.AddWithValue("id", 3432432); * command.ExecuteNonQuery(); * }*/ } else { MessageBox.Show("Пароли не совпадают! Попробуйте ввести еще раз", "Предупреждение"); } }
private void buLogin_Click(object sender, EventArgs e) { if ((edPassword.Text == "sveta") && (edUserName.Text == "sveta")) { // MessageBox.Show("Login Successfull", "Login Information"); this.Hide(); fmMain mainWindow = new fmMain(); mainWindow.ShowDialog(); this.Close(); } else { try { if (conn.State == ConnectionState.Open) { conn.Close(); } conn.Open(); // string genres = "SELECT * FROM dic_genres"; // получаем соль из базы данных string sql = "Select u.id, u.salt, u.password from users u where u.username= '******'"; // NpgsqlCommand command = new NpgsqlCommand(sql, conn); // command.Parameters.AddWithValue("userId", 3432432); // command.Parameters.AddWithValue("username", edUserName.Text); // string salt = (string)command.ExecuteScalar(); // вычисляем хеш введенного пароля // string hash = SHAHash.ComputeSHAHash(edPassword.Text, salt); // Define a query // string sqlnew = "Select * from users u where u.password=@hash and u.username=@username"; // NpgsqlCommand commandnew = new NpgsqlCommand(sqlnew, conn); /// commandnew.Parameters.AddWithValue("hash", hash); // commandnew.Parameters.AddWithValue("username", edUserName.Text); // Execute the query and obtain a result set // NpgsqlDataReader dr = commandw.ExecuteReader(); DataTable dtUser = Fill(sql); if (dtUser.Rows.Count > 0) { int userId = Convert.ToInt32(dtUser.Rows[0]["id"]); string salt = dtUser.Rows[0]["salt"].ToString(); string curHash = dtUser.Rows[0]["password"].ToString(); // вычисляем хеш введенного пароля string genHash = SHAHash.ComputeSHAHash(edPassword.Text, salt); //MessageBox.Show(genHash); // edUserName.Text = genHash; if (genHash == curHash) { // MessageBox.Show("Login Successfull", "Login Information"); this.Hide(); fmMain mw = new fmMain(userId); CurrentUser.setUserId(userId); mw.ShowDialog(); this.Close(); } else { MessageBox.Show("Неверные пароль и(или) имя пользователя", "Ошибка аутентификации"); } } else { MessageBox.Show("Неверные пароль и(или) имя пользователя", "Ошибка атуентификации"); } } catch (Exception msg) { // something went wrong, and you wanna know why MessageBox.Show(msg.ToString()); throw; } // this.Hide(); // fmMain mainWindow = new fmMain(); // mainWindow.ShowDialog(); // this.Close(); } }