2018年1月12日 星期五

C# Sqlite 資料庫加密

C# Sqlite 資料庫加密

http://fecbob.pixnet.net/blog/post/38124397-c%23-sqlite-%E8%B3%87%E6%96%99%E5%BA%AB%E5%8A%A0%E5%AF%86

用了ADO.NET 2.0 SQLite Data Provider 這樣可以直接利用它來創建一個加密的sqlite資料庫。
有關c#代碼如下:

1、創建空的sqlite資料庫。

//資料庫名的尾碼你可以直接指定,甚至沒有尾碼都可以
//方法一:創建一個空sqlite資料庫,用IO的方式
FileStream fs = File.Create("c:\\test2.db");
//方法二:用SQLiteConnection
SQLiteConnection.CreateFile("c:\\test2.db");
創建的資料庫是個0位元組的檔。

2、創建加密的空sqlite資料庫

//創建一個密碼為password的空的sqlite資料庫
SQLiteConnection.CreateFile("c:\\test2.db");
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test2.db");
cnn.Open();
cnn.ChangePassword("password");

3、給未加密的資料庫加密

SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test2.db");
cnn.Open();
cnn.ChangePassword("password");
//方法一
SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test2.db");
cnn.SetPassword("password");
cnn.Open();
//方法二
SQLiteConnectionStringBuilder builder = new SQLiteConnectionStringBuilder();
builder.DataSource = @"c:\test2.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。

創作者介紹
shadow 發表在 痞客邦 PIXNET

沒有留言:

張貼留言