日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

跨平台加密版 SQLite 3 - wxSQLite3

發(fā)布時(shí)間:2023/11/30 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 跨平台加密版 SQLite 3 - wxSQLite3 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:高張遠(yuǎn)矚(HiLoveS)

博客:http://www.cnblogs.com/hiloves/

轉(zhuǎn)載請(qǐng)保留該信息

SQLite 3 開(kāi)源版不帶加密功能,對(duì)于一個(gè)保存在本地的數(shù)據(jù)庫(kù)來(lái)說(shuō)沒(méi)有加密功能讓人難以接受,只要用記事本打開(kāi)數(shù)據(jù)庫(kù)就可以看到數(shù)據(jù)庫(kù)內(nèi)保存的數(shù)據(jù),對(duì)安全多多少少有一點(diǎn)影響。有一個(gè)辦法是把內(nèi)容加密后保存到數(shù)據(jù)庫(kù)中,但遇到類似 like,或字段內(nèi)容與字段內(nèi)容比較這就不行了。治本的辦法是讓 SQLite 原生的支持加密。好在 SQLite 的作者預(yù)留了加密解密的相關(guān)接口,許多愛(ài)好者也自己修改源版添加加密功能。如果你也在關(guān)注,那你可能已經(jīng)閱讀了大量關(guān)于如何添加加密的文章,同時(shí)我也不是很通相關(guān)的技術(shù),我就不再講解如何修改源碼了。雖然網(wǎng)上有大量的文章教你如何修改源碼,但都沒(méi)有提供編譯后的 DLL 文件,或者提供的 DLL 版本過(guò)低。這里介紹一個(gè)開(kāi)源項(xiàng)目:wxSQLite3,該項(xiàng)目是一個(gè) SQLite 的 C++ warpper,它順帶將 SQLite 的加密函數(shù)實(shí)現(xiàn)了,并且它使用 AES 算法進(jìn)行加密。你可以在這里下載到最新的包,在目錄 \sqlite3\secure 下有這幾個(gè)目錄,aes128 目錄下的 sqlite3.dll 文件,是已編譯的用128位 AES 算法加密的 SQLite 3 DLL 文件,而 aes 256 目錄下的是用256位 AES 算法加密的,而 src 目錄下是實(shí)現(xiàn)加密的 SQLite 3 源代碼。同時(shí) wxSQLite3 項(xiàng)目更新很快,你總是可以下載到較新的包。從1.9.8版本開(kāi)始將對(duì)256位 AES 加密算法進(jìn)行實(shí)驗(yàn),估計(jì)不久的版本就可以穩(wěn)定使用。

使用起來(lái)也很簡(jiǎn)單,首先打開(kāi)數(shù)據(jù)庫(kù) sqlite3_open,然后在操作數(shù)據(jù)庫(kù)之前執(zhí)行 sqlite3_key 后就可進(jìn)行數(shù)據(jù)庫(kù)操作,否則會(huì)返回錯(cuò)誤。

sqlite3_key是輸入密鑰,如果數(shù)據(jù)庫(kù)已加密必須先執(zhí)行此函數(shù)并輸入正確密鑰才能進(jìn)行操作,如果數(shù)據(jù)庫(kù)沒(méi)有加密,執(zhí)行此函數(shù)后進(jìn)行數(shù)據(jù)庫(kù)操作反而會(huì)出現(xiàn)“此數(shù)據(jù)庫(kù)已加密或不是一個(gè)數(shù)據(jù)庫(kù)文件”的錯(cuò)誤。

int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定數(shù)據(jù)庫(kù),pKey 是密鑰,nKey 是密鑰長(zhǎng)度。例:sqlite3_key( db, "abc", 3);

sqlite3_rekey是變更密鑰或給沒(méi)有加密的數(shù)據(jù)庫(kù)添加密鑰或清空密鑰,變更密鑰或清空密鑰前必須先正確執(zhí)行 sqlite3_key。在正確執(zhí)行 sqlite3_rekey 之后在 sqlite3_close 關(guān)閉數(shù)據(jù)庫(kù)之前可以正常操作數(shù)據(jù)庫(kù),不需要再執(zhí)行 sqlite3_key。

int sqlite3_rekey( sqlite3 *db, const void *pKey, int nKey),參數(shù)同上。

清空密鑰為 sqlite3_rekey( db, NULL, 0)。

轉(zhuǎn)載于:https://www.cnblogs.com/hiloves/archive/2010/04/25/1719749.html

總結(jié)

以上是生活随笔為你收集整理的跨平台加密版 SQLite 3 - wxSQLite3的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。