public void BDGenerateKey(string username) { DialogResult dialogResult1 = MessageBox.Show("При генерации нового ключа необходимо сменить пароль. Все документы будут удалены.\nВы уверены, что хотите сгенерировать новый ключ?", "Генерация ключа", MessageBoxButtons.YesNo); if (dialogResult1 == DialogResult.No) { return; } Crypt crypt = new Crypt(); string key = crypt.GenerateKey(); DB db = new DB(); SQLiteCommand command = new SQLiteCommand("SELECT password FROM users WHERE login = @uL", db.getConnection()); command.Parameters.AddWithValue("@uL", username).Size = 50; SQLiteCommand command1 = new SQLiteCommand($"UPDATE users SET cryptokey=@uK WHERE login = @uL", db.getConnection()); command1.Parameters.AddWithValue("@uK", key).Size = crypt.keyLength; command1.Parameters.AddWithValue("@uL", username).Size = 50; SQLiteCommand command2 = new SQLiteCommand($"DELETE FROM {username}", db.getConnection()); db.openConnection(); string result = command.ExecuteScalar().ToString(); command2.ExecuteNonQuery(); if (command1.ExecuteNonQuery() == 1) { MessageBox.Show($"Новый ключ для пользователя {username} успешно сгенерирован"); } else { MessageBox.Show("Произошла ошибка при генерации ключа"); } db.closeConnection(); PassChangeNoConfim passChangeNoConfim = new PassChangeNoConfim(); passChangeNoConfim.username = username; DialogResult dr = new DialogResult(); db.openConnection(); while (dr != DialogResult.OK || command.ExecuteScalar().ToString() == result) { dr = passChangeNoConfim.ShowDialog(); } db.closeConnection(); }
private void bAdd_Click(object sender, EventArgs e) { string login = tbLogin.Text; string password = tbPassword.Text; { if (login == "" || login == "Логин") { MessageBox.Show("Введите логин"); return; } if (password == "" || password == "Пароль") { MessageBox.Show("Введите пароль"); return; } if (isUserExists()) { return; } DB db = new DB(); SQLiteCommand command = new SQLiteCommand("INSERT INTO users(login, password, cryptokey) VALUES(@login, @password, @cryptokey)", db.getConnection()); //для шифрования пароля Crypt crypt = new Crypt(); string key = crypt.GenerateKey(); string hash = crypt.GetHash(password); command.Parameters.AddWithValue("@login", login).Size = 50; command.Parameters.AddWithValue("@password", crypt.CryptStr(hash, key)).Size = 50; command.Parameters.AddWithValue("@cryptokey", key).Size = crypt.keyLength; SQLiteCommand command2 = new SQLiteCommand($"CREATE TABLE {login} (docname nvarchar(50) NOT NULL, doc ntext NOT NULL);", db.getConnection()); db.openConnection(); command2.ExecuteNonQuery(); if (command.ExecuteNonQuery() == 1) { MessageBox.Show("Аккаунт успешно создан"); } else { MessageBox.Show("Произошла ошибка"); } db.closeConnection(); this.Hide(); } }
private protected void CreateAdminIfNotExit() { DB db = new DB(); SQLiteCommand command = new SQLiteCommand($"SELECT admin FROM users", db.getConnection()); db.openConnection(); try { command.ExecuteNonQuery(); } catch { SQLiteCommand command1 = new SQLiteCommand("INSERT INTO users(login, password, cryptokey) VALUES(@login, @password, @cryptokey)", db.getConnection()); //для генерации ключа Crypt crypt = new Crypt(); string key = crypt.GenerateKey(); command1.Parameters.AddWithValue("@login", "admin").Size = 50; command1.Parameters.AddWithValue("@password", "admin").Size = 50; command1.Parameters.AddWithValue("@cryptokey", key).Size = crypt.keyLength; db.openConnection(); try { command1.ExecuteNonQuery(); } catch { //MessageBox.Show("Произошла ошибка"); } } db.closeConnection(); }
private void bRegister_Click(object sender, EventArgs e) { DB db = new DB(); string login = tbLogin.Text; string password = tbPassword.Text; if (login == "") { MessageBox.Show("Введите логин"); return; } if (password == "") { MessageBox.Show("Введите пароль"); return; } if (isUserExists()) { MessageBox.Show("Пользователь с таким логином уже существует, введите другой."); return; } SQLiteCommand command = new SQLiteCommand("INSERT INTO users(login, password, cryptokey) VALUES(@login, @password, @cryptokey)", db.getConnection()); //для шифрования пароля Crypt crypt = new Crypt(); string key = crypt.GenerateKey(); string hash = crypt.GetHash(password); command.Parameters.AddWithValue("@login", login).Size = 50; command.Parameters.AddWithValue("@password", crypt.CryptStr(hash, key)).Size = 50; command.Parameters.AddWithValue("@cryptokey", key).Size = crypt.keyLength; SQLiteCommand command2 = new SQLiteCommand($"CREATE TABLE {login} (docname nvarchar(50) NOT NULL, doc ntext NOT NULL);", db.getConnection()); db.openConnection(); if (command.ExecuteNonQuery() == 1) { command2.ExecuteNonQuery(); MessageBox.Show("Аккаунт успешно создан"); } else { MessageBox.Show("Произошла ошибка"); } db.closeConnection(); this.Hide(); if (login == "admin") { Admin admin = new Admin(); admin.Show(); return; } TextEncrypter textEncrypter = new TextEncrypter(); textEncrypter.username = login; if (login != "admin") { textEncrypter.admin = false; } textEncrypter.Show(); }