sqlite3加密編譯

2021-10-03 12:18:43 字數 1637 閱讀 5961

廢話不多說,直接貼出方法,目的在於請路過老鳥幫助測試一下功能是否全面,是否真正實現了加密(反正我用記事本開啟生成的db檔案看不到寫入記錄的明文了)。

codec.c;codec.h;rijndael.c;rijndael.h;codecext.c

二、sqlite3的加密函式說明

sqlite3_key是輸入金鑰,如果資料庫已加密必須先執行此函式並輸入正確金鑰才能進行操作,如果資料

庫沒有加密,執行此函式後進行資料庫操作反而會出現「此資料庫已加密或不是乙個資料庫檔案」的錯

誤。int sqlite3_key( sqlite3 *db, const void *pkey, int nkey),db 是指定資料庫,pkey 是金鑰,

nkey 是金鑰長度。例:sqlite3_key( db, "abc", 3);

sqlite3_rekey是變更金鑰或給沒有加密的資料庫新增金鑰或清空金鑰,變更金鑰或清空金鑰前必須先正

確執行 sqlite3_key。在正確執行 sqlite3_rekey 之後在 sqlite3_close 關閉資料庫之前可以正常操

作資料庫,不需要再執行 sqlite3_key。

int sqlite3_rekey( sqlite3 *db, const void *pkey, int nkey),引數同上。

清空金鑰為 sqlite3_rekey( db, null, 0)。

其實sqlite的兩個加密函式使用起來非常的簡單,下面分情況說明:

1、 給乙個未加密的資料庫新增密碼:如果想要新增密碼,則可以在開啟資料庫檔案之後,關閉資料庫

檔案之前的任何時刻呼叫sqlite3_key函式即可,該函式有三個引數,其中第乙個引數為資料庫物件,第

二個引數是要設定的密碼,第三個是密碼的長度。例如:sqlite3_key(db,"1q2w3e4r",8);        //給

資料庫設定密碼1q2w3e4r

注:如果資料庫沒有加密,執行此函式後進行資料庫操作反而會出現「此資料庫已加密或不是乙個資料

庫檔案」的錯誤?經測試,只能在新建資料庫時設定密碼!

2、 讀取乙個加密資料庫中的資料:完成這個任務依然十分簡單,你只需要在開啟資料庫之後,再次調

用一下sqlite3_key函式即可,例如,但資料庫密碼是123456時,你只需要在**中加入sqlite3_key

(db,"123456",6);

3、 更改資料庫密碼:首先你需要使用當前的密碼正確的開啟資料庫,之後你可以呼叫sqlite3_rekey

(db,"112233",6) 來更改資料庫密碼。

4、刪除密碼:也就是把資料庫恢復到明文狀態。這時你仍然只需要呼叫sqlite3_rekey函式,並且把該

函式的第二個引數置為null或者"",或者把第三個引數設為0。

三、使用sqlite3資料庫在stdafx.**件中加入的**

#define sqlite_has_codec 1

extern "c"

;#ifdef _debug

#pragma comment(lib, "sqlite3/sqlite3encryptiond.lib")

#else

#pragma comment(lib, "sqlite3/sqlite3encryption.lib")

#endif

原帖出處

sqlite3 編譯問題

sqlite3用到libpthread和libdl因此要鏈結這兩個庫 假如先把sqlite3.c編譯成sqlite3.o或者libsqlite3.a g lm lpthread ldl o 目標 main.o sqlite3.o 或者 g lm lpthread ldl lsqlite3 o 目標 ...

sqlite3加密功能 sqlcipher

1.openssl編譯 config make 2.sqlcipher編譯 首先是.configure進行配置.configure enable tempstore yes cflags dsqlite has codec ldflags lcrypto prefix pwd install,之後進...

vs2013編譯加密版sqlite3(附帶原始碼)

說明 本例項使用的是wxsqlite3的封裝版。編譯環境 vs2013。配置執行流程 1 新建乙個win32程式,命名為demo,在專案根目錄demo同級建立lib和include資料夾 5 在demo工程中的sqlite3.h的最前面新增如下 ifndef sqlite has codec def...