廢話不多說,直接貼出方法,目的在於請路過老鳥幫助測試一下功能是否全面,是否真正實現了加密(反正我用記事本開啟生成的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...