Sqlite數據庫的加密


來源:https://blog.csdn.net/xjbx/article/details/2712236/

最近在做一個winform的程序,考慮用Sqlite的數據庫,小巧而實用,比Access強多了,不過需要加密,不過free版本沒有實現加密,有一些c++的實現:比如:http://www.sqlite.com.cn/MySqlite/3/253.Html 和http://www.cppblog.com/niewenlong/archive/2007/06/01/25261.html 。不過,鑒於我對c++不是很精通,於是就采用了ADO.NET 2.0 SQLite Data Provider 這樣可以直接利用它來創建一個加密的sqlite數據庫
有關c#代碼如下:
1、創建空的sqlite數據庫。


// 數據庫名的后綴你可以直接指定,甚至沒有后綴都可以

//方法一:創建一個空sqlite數據庫,用IO的方式

FileStream fs = File.Create("c://test.db");

//方法二:用SQLiteConnection

SQLiteConnection.CreateFile("c://test.db");

 

創建的數據庫是個0字節的文件。

2、創建加密的空sqlite數據庫


// 創建一個密碼為password的空的sqlite數據庫

SQLiteConnection.CreateFile("c://test2.db");               

SQLiteConnection cnn = new SQLiteConnection("Data Source=c://test2.db");

SQLiteConnection cnn = new SQLiteConnection("Data Source=D://test2.db");

cnn.Open();

cnn.ChangePassword("password");

3、給未加密的數據庫加密


SQLiteConnection cnn =   new SQLiteConnection( " Data Source=c://test.db " );

cnn.Open();

cnn.ChangePassword("password");

4、打開加密sqlite數據庫

//方法一

SQLiteConnection cnn = new SQLiteConnection("Data Source=c://test2.db");

cnn.SetPassword("password");

cnn.Open();

//方法二

SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();

builder.DataSource = @"c:/test.db";

builder.Password = @"password";

SQLiteConnection cnn = new SQLiteConnection(builder.ConnectionString);

cnn .Open();

注:
A、因為加密的函數是利用windows api,故加密后的數據庫只能適用在windows平台,加密的方式是整體文件加密。
B、加密的算法是RC4,如果你想采用別的加密算法來加密,請參考ADO.NET 2.0 SQLite Data Provider 的源碼來修改。
c、相關sqlite數據庫操作類似ADO.NET 2.0。詳見ADO.NET 2.0 SQLite Data Provider的幫助文檔。
c、ADO.NET 2.0 SQLite Data Provider 版本為:1.0.53.0 ,SQLite版本 : 3.6.0。
d、開發環境為vs2008。

ADO.NET 2.0 SQLite Data Provider的下載地址:http://sourceforge.net/project/showfiles.php?group_id=132486&package_id=145568

有關sqlite的中文介紹,你可以看看這里:http://www.cnblogs.com/shanyou/archive/2007/01/08/615245.html

本文首發地址:http://www.watch-life.net/net-tip/sqlite-encrypted.html

更多文章見:守望軒[http://www.watch-life.net/]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM