- [TOOL] Chia sẻ phần mềm thay đổi thông tin cấu hình máy tính
- [C#] Hướng dẫn Export dữ liệu ra file Microsoft Word Template
- [C#] Chia sẻ source code tool kiểm tra domain website
- [C#] Hướng dẫn tạo file PDF sử dụng thư viện QuestPDF
- [C#] Hướng dẫn tạo ứng dụng dock windows giống Taskbar
- [C#] Chia sẻ source code sử dụng Object Listview trên Winform
- [VB.NET] Chia sẻ source code quản lý thu chi mô hình 3 lớp Winform
- [DATABASE] Xóa lịch sử danh sách đăng nhập tài khoản trên SMSS Sqlserver Management Studio
- [C#] Sử dụng FolderBrowserDialog Vista trên Winform
- [DEVEXPRESS] Chia sẻ tool Winform UI Templates Early Access Preview (EAP)
- [C#] Chia sẻ source code Spin Content (Trộn nội dung văn bản theo từ đồng nghĩa) trên Winform
- [VB.NET] Chia sẻ source code lịch âm dương và hẹn lịch nhắc việc
- [C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)
- [VB.NET] Hướng dẫn giải captcha sử dụng dịch vụ AZCaptcha API trên winform
- [C#] Hướng dẫn chứng thực đăng nhập ứng dụng bằng vân tay (Finger Print) trên máy tính
- [C#] Color Thief cách xuất màu sắc thiết kế từ hình ảnh
- [C#] Cách tạo bản quyền và cho phép dùng thử ứng dụng Winform
- [C#] Hướng dẫn sử dụng trình duyệt web Chrome convert HTML sang tập tin file PDF
- [C#] Kết nôi điện thoại Android, IOS với App Winform via Bluetooth
- [DATABASE] Cách query cộng trừ dồn dần trong Sqlserver
[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ó ư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.