sqlite資料庫加密

2021-09-21 18:11:50 字數 1646 閱讀 9016

sqlite3加密支援

sqlite3免費版並不支援加密,不過留有介面,有不少開源的加密實現,不過有的需要使用openssl配置略顯繁瑣,不過使用wxsqlite比較方便。

wxsqlite3

wxsqlite3是wxwidgets的擴充套件元件,對sqlite3的c api進行了封裝,並且實現了加解密功能。

目前支援兩種演算法,aes128演算法(預設)和aes256演算法

wxsqlite在secure/src/sqlite3secure.c中引入了其他原始檔,這樣你只用編譯sqlite3secure.c就可以了,但是這樣有時會比較麻煩。

sqlite3-secure

專案位址

我這裡說的sqlite3-secure就是從wxsqlite3中提取的,只不過做了些修改,更加方便使用,直接新增到工程中就可以了。

而且使用起來仍然使用sqlite3的c api,沒有什麼c++的封裝。

經過測試的系統:mac os x, ios, android

修改了什麼?

將不用新增到工程的c原始檔字尾名改為ccode(要不然得遮蔽編譯這些檔案,否則會出現符號重複的錯誤)

預設啟用加密支援(新增啟用加密的巨集)

刪除了wxsqlite的c++封裝,只提供原生sqlite3-api

刪除了shell.c(編譯shell命令工具sqlite的**)

整理了目錄結構

加密解密api

// 解密或用於第一次加密

int sqlite3_key(sqlite3 *db, const void *zkey, int nkey);

// 重設密碼

int sqlite3_rekey(sqlite3 *db, const void *zkey, int nkey);

注意:#include

#include 「sqlite3-secure/sqlite3.h」

void db_open(sqlite3 **ppdb, const std::string &path);

void db_close(sqlite3 *pdb);

void db_encrypt(sqlite3 *pdb, const std::string &password);

// demo

void db_createtable(sqlite3 *pdb);

void db_insert(sqlite3 *pdb);

void db_delete(sqlite3 *pdb);

void db_update(sqlite3 *pdb);

void db_select(sqlite3 *pdb);

int main()

catch (const char *what)

return 0;void db_open(sqlite3 **ppdb, const std::string &path)

printf("\n");

c = sqlite3_step(pstmt);

}if (c != sqlite_done)

throw sqlite3_errmsg(pdb);

c = sqlite3_finalize(pstmt);

if (c != sqlite_ok)

throw sqlite3_errmsg(pdb);

加密,解密Sqlite資料庫

加密,解密sqlite資料庫 加密乙個未加密的資料庫或者更改乙個加密資料庫的密碼,開啟資料庫,啟動sqliteconnection的changepassword 函式 opens an unencrypted database sqliteconnection cnn newsqliteconnec...

Sqlite資料庫的加密

最近在做乙個winform的程式,考慮用sqlite的資料庫,小巧而實用,比access強多了,不過需要加密,不過free版本沒有實現加密,有一些c 的實現 比如 和 不過,鑑於我對c 不是很精通,於是就採用了ado.net 2.0 sqlite data provider 這樣可以直接利用它來建立...

Sqlite資料庫的加密

sqlite資料庫的加密 1 建立空的sqlite資料庫。資料庫名的字尾你可以直接指定,甚至沒有字尾都可以 方法一 建立乙個空sqlite資料庫,用io的方式 filestream fs file.create c test.db 方法二 用sqliteconnection sqliteconnec...