- [SQLSERVER] Hướng dẫn tạo file backup Database bằng file BAT
- [C#] Chia sẽ source code nhận dạng nhiều khuôn mặt RealTime
- [C#] Đặt mật khẩu bảo vệ cho database Sqlite
- [C#] Tách file thành nhiều phần để download
- [SQL SERVER] Chia sẽ hàm convert table sang class C#
- [C#] Hướng dẫn Split files and Merge files
- [C#] Hướng dẫn Sử dụng IL Disassembler (ildasm.exe) và IL Assembler (ilasm.exe) để chỉnh sửa mã nguồn
- [C#] Hướng dẫn lấy icon từ process
- [C#] Hướng dẫn chuyển đổi chuỗi sang nhị phân và ngược lại
- [C#] Hướng dẫn sử dụng Expando Object với từ khóa Dynamic
- [C#] Hướng dẫn sử dụng thuật toán mã hóa và giải mã Atom-128 algorithm
- [C#] Hướng dẫn sắp xếp column listview (sort column header listview)
- [C#] Hướng dẫn lấy icon từ thuộc tính file shell32.dll trong windows
- [SQL SERVER] Hướng dẫn tạo bảng cấu trúc cây theo phương pháp đệ quy
- [SQL SERVER] Hướng dẫn sử dụng hàm WITH để đệ quy trong sql
- C# - Kéo thả dòng từ một lưới sang một lưới khác trong cùng một form
- [C#] Hướng dẫn tạo checkbox Datagridview và truyền dữ liệu giữa hai Gridview
- [C#] Hướng dẫn sử dụng StopWatch để kiểm tra tốc độ xử lý trong Visual Studio
- [C#] Hướng dẫn tạo hotkey cho ứng dụng winform
- [C#] Hướng dẫn mã hóa và giải mã sử dụng thuật toán ROT13
[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.