[C#] Đặt mật khẩu bảo vệ cho database Sqlite
Bài viết hôm nay, mình sẽ tiếp tục hướng dẫn các bạn cách bảo vệ database sqlite bằng cách đặt mật khẩu trong lập trình C# . Khi thiết kế ứng dụng, để lưu trữ một số dữ liệu nhỏ thì người ta hay dùng XML, JSON hoặc SQLite. Các phương pháp lưu trữ này có ...
Bài viết hôm nay, mình sẽ tiếp tục hướng dẫn các bạn cách bảo vệ database sqlite bằng cách đặt mật khẩu trong lập trình C#.
Khi thiết kế ứng dụng, để lưu trữ một số dữ liệu nhỏ thì người ta hay dùng XML, JSON hoặc SQLite. Các phương pháp lưu trữ này có ưu điểm là có tính di động (portable) cao, không yêu cầu máy tính phải cài thêm Hệ quản trị cơ sở dữ liệu nào khác. Lưu trữ ở dạng này thì thường là dữ liệu thô ở dạng plain-text, không được mã hóa.
Vì vậy để bảo vệ dữ liệu lưu trong các định dạng này thì người ta hay sử dụng một hay kết hợp nhiều kỹ thuật mã hóa để tránh dữ liệu bị nhòm ngó, có thể kể đến là đặt mật khẩu kết nối đến DB SQLite, mã hóa AES… Bài viết này sẽ nói về SQLite ver 3 do từ phiên bản này SQLite mới hỗ trợ mật khẩu.
Một số phương pháp mã hóa DB SQLite
- Trước hết là note lại một số gợi ý về một số phương pháp kết hợp mã hóa database SQLite:
- SEE – Mất phí
- wxSQLite
- SQLCipher – Mã nguồn mở, sử dụng openSSL để mã hóa dữ liệu.
- SQLiteCrypt – Mất phí
- botansqlite3 – Miễn phí, mã hóa SQLite3 bằng thuật toán Botan.
- SQLiteCrypto – Mất phí, SQLiteCrypto mã hóa DB bằng AES-256 và SHA-256
Bảo vệ DB bằng mật khẩu
Bây giờ là cách bảo vệ DB SQLite bằng mật khẩu, lúc này dữ liệu sẽ được mã hóa theo thuật toán RSA. Cách này đơn giản nhất, nhưng nếu một ai đó cố dịch lại chương trình của bạn thì có thể tìm thấy password. Ít nhất thì chúng ta vẫn có thể tự bảo vệ trước một số thanh niên manh động, còn đối với cao thủ thì… mấy chương trình cả đống tiền còn bị crack cơ mà. Lo lắng mà làm gì! :)
Cài đặt mật khẩu cho DB
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=Database.db;Version=3;"); _dbConn.SetPassword("password"); _dbConn.Open(); //...... _dbConn.Close();
Sau khi cài đặt rồi thì đã đến lúc sử dụng
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=password;"); _dbConn.Open(); //..... _dbConn.Close();
Có thể thêm phần password vào chuỗi connection string
connectionString += "Password=" + thePassword + ";";
Thay đổi mật khẩu
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=old_password;"); _dbConn.Open(); _dbConn.ChangePassword("new_password"); _dbConn.Close();
Xóa bỏ mật khẩu
SQLiteConnection _dbConn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=old_password;"); _dbConn.Open(); _dbConn.ChangePassword(""); //OR _dbConn.ChangePassword(String.Empty); _dbConn.Close();
Lưu ý: Khi bạn thêm mật khẩu vào DB rồi thì sẽ khó có thể đọc được trên một số phần mềm quản lý DB SQLite.