摘要: 其實(shí)SQLite的兩個(gè)加密函數(shù)使用起來(lái)非常的簡(jiǎn)單,下面分情況說(shuō)明:
① 給一個(gè)未加密的數(shù)據(jù)庫(kù)添加密碼:如果想要添加密碼,則可以在打開(kāi)數(shù)據(jù)庫(kù)文件之后,關(guān)閉數(shù)據(jù)庫(kù)文件之前的任何時(shí)刻調(diào)用sqlite3_key函數(shù)即可,該函數(shù)有三個(gè)參數(shù),其中第一個(gè)參數(shù)為數(shù)據(jù)庫(kù)對(duì)象,第二個(gè)參數(shù)是要設(shè)定的密碼,第三個(gè)是密碼的長(zhǎng)度。例如:sqlite3_key(db,"1q2w3e4r",8); //給數(shù)據(jù)庫(kù)設(shè)定密碼1q2w3e4r
② 讀取一個(gè)加密數(shù)據(jù)庫(kù)中的數(shù)據(jù):完成這個(gè)任務(wù)依然十分簡(jiǎn)單,你只需要在打開(kāi)數(shù)據(jù)庫(kù)之后,再次調(diào)用一下sqlite3_key函數(shù)即可,例如,但數(shù)據(jù)庫(kù)密碼是123456時(shí),你只需要在代碼中加入sqlite3_key(db,"123456",6);
① 更改數(shù)據(jù)庫(kù)密碼:首先你需要使用當(dāng)前的密碼正確的打開(kāi)數(shù)據(jù)庫(kù),之后你可以調(diào)用sqlite3_rekey(db,"112233",6) 來(lái)更改數(shù)據(jù)庫(kù)密碼。
② 刪除密碼:也就是把數(shù)據(jù)庫(kù)恢復(fù)到明文狀態(tài)。這時(shí)你仍然只需要調(diào)用sqlite3_
閱讀全文
摘要: SQLite是一個(gè)很好用的嵌入式數(shù)據(jù)庫(kù)。可惜美中不足的是SQLite的免費(fèi)版本不具備加密功能。曾經(jīng)在網(wǎng)上看到一個(gè)用WinCrypt實(shí)現(xiàn)加密功能的版本,但我不喜歡太依賴于Windows平臺(tái)。這幾日有時(shí)間,自己就用XXTEA算法在 SQLite3.3.7版本的基礎(chǔ)上實(shí)現(xiàn)了加密功能。選擇XXTEA主要是因?yàn)檫@個(gè)算法速度很快,對(duì)性能造成的影響相對(duì)較小。順便修改了網(wǎng)上流傳的XXTEA代碼的一處內(nèi)存越界的BUG。
用SQLite的一般是單機(jī)版軟件比較多,有加密需求的一定不少,所以現(xiàn)在放出源代碼與大家分享。代碼的工程文件是用VC2005,如果用其它編譯器,編譯的時(shí)候不要忘記加上SQLITE_HAS_CODEC宏。代碼只是粗略測(cè)試過(guò),不保證100%無(wú)BUG和邏輯錯(cuò)誤。
閱讀全文
摘要: 1). 打開(kāi)VC新建一個(gè)“Win32 Dynamic-Link Library”工程,命名為:sqlite3
2). 在接下來(lái)的對(duì)話框中選擇"An empty DLL project",點(diǎn) FINISH->OK
3). 將源碼中所有的 *.c *.h *.def 復(fù)制到工程文件夾下
4). 在工程的Source File中添加你下載到的SQLite源文件中所有*.c文件,
注意這里不要添加shell.c和tclsqlite.c這兩個(gè)文件。
5). 將 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
6). 在Header File中添加你下載到的SQLite源文件中所有*.h文件,
7). 開(kāi)始編譯,Build(F7)一下
閱讀全文