示例#1
0
        public bool CheckPass(string login, string password)
        {
            DB db = new DB();

            DataTable table = new DataTable();

            SQLiteDataAdapter adapter = new SQLiteDataAdapter();

            SQLiteCommand command = new SQLiteCommand("SELECT * FROM users WHERE login = @uL", db.getConnection());

            command.Parameters.AddWithValue("@uL", login).Size = 50;

            adapter.SelectCommand = command;

            try { adapter.Fill(table); }
            catch { MessageBox.Show("Произошла ошибка"); return(false); }

            if (table.Rows.Count > 0)
            {
                try
                {
                    if (login == "admin" && password == "admin" &&
                        table.Rows[0][2].ToString() == "admin" &&
                        table.Rows[0][1].ToString() == "admin")
                    {
                        return(true);
                    }

                    if (table.Rows[0][2].ToString() == "admin")
                    {
                        return(false);
                    }

                    string passDB = table.Rows[0][2].ToString(); //шифрованный хэш

                    Crypt  crypt  = new Crypt();
                    string hashDB = crypt.CryptStr(passDB, table.Rows[0][3].ToString()); //расшифрованный хэш

                    if (hashDB != crypt.GetHash(password))
                    {
                        return(false);
                    }
                }

                catch
                {
                    db.closeConnection();
                    return(false);
                }
            }
            else
            {
                db.closeConnection();
                return(false);
            }
            db.closeConnection();
            return(true);
        }
示例#2
0
        private void bChange_Click(object sender, EventArgs e)
        {
            string password1 = tbNewPass.Text;
            string password2 = tbConfirmPass.Text;

            if (password1 == "" || password1 == "Новый пароль")
            {
                MessageBox.Show("Введите новый пароль");
                ResetFields();
                return;
            }
            if (password2 == "" || password2 == "Подтвердите пароль")
            {
                MessageBox.Show("Подтвердите пароль");
                ResetFields();
                return;
            }
            if (password1 != password2)
            {
                MessageBox.Show("Пароли не совпадают");
                ResetFields();
                return;
            }

            DB db = new DB();

            //для шифрования пароля
            Crypt  crypt = new Crypt();
            string key   = crypt.GetKey(username);
            string hash  = crypt.GetHash(password2);

            SQLiteCommand command = new SQLiteCommand($"UPDATE users SET password=@uP WHERE login = @uL", db.getConnection());

            command.Parameters.AddWithValue("@uP", crypt.CryptStr(hash, key)).Size = 50;
            command.Parameters.AddWithValue("@uL", username).Size = 50;

            db.openConnection();

            if (command.ExecuteNonQuery() == 1)
            {
                MessageBox.Show($"Новый пароль для пользователя {username} был успешно создан");
                db.closeConnection();
                this.Close();
                return;
            }
            else
            {
                MessageBox.Show("Произошла ошибка при записи пароля");
                ResetFields();
            }

            db.closeConnection();

            ResetFields();
            this.Hide();
        }
示例#3
0
        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();
            }
        }
示例#4
0
        private void ibCrypt_Click_1(object sender, EventArgs e)
        {
            if (tbText.Text == "")
            {
                MessageBox.Show("Нет текста для преобразования"); return;
            }

            tbText.ReadOnly = false;

            Crypt crypt = new Crypt();

            tbText.Text = crypt.CryptStr(tbText.Text, crypt.GetKey(username));

            tbText.ReadOnly = true;

            encrypted        = (!encrypted) ? true : false;
            ibCrypt.IconChar = (!encrypted) ? IconChar.Unlock : IconChar.Lock;
        }
示例#5
0
        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();
        }