Cocos2dx使用wxsqlite開源加密SQLite3數據庫


最近使用wxsqlite加密sqlite3數據庫,剛開始折騰好幾天,在xcode上一直編譯不通過,后來在sqlite3.c找到配置,編譯順利通過,太激動了,哈哈,廢話少說!總結一下android和ios平台。

wxsqlite3

wxSqlite3作為wxWidgets的擴展組件用C++語法對Sqlite3的API進行了封裝,為Sqlite3的使用提供了方便,並順帶實現了加密。wxWidgets是一個著名的C++跨平台UI框架。支持兩種加密算法,128位的rijndael算法(默認)和256位的AES算法。下載:http://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/

解壓wxSqlite3壓縮包,找到sqlite3/secure/src文件夾的文件復制到external/sqlite3/include目錄下,並且只需編譯sqlite3secure.c文件。

-->啟用宏
需要在sqlite3secure.c最上面添加宏,啟用加密
#define SQLITE_HAS_CODEC
//啟用256位加密,如果不啟用,可不加
#define CODEC_TYPE CODEC_TYPE_AES256

在sqlite3.h和sqlite3.c最上面添加
#define SQLITE_HAS_CODEC

Android支持

1.在external/sqlite3目錄下新建一個Android.mk文件

LOCAL_PATH := $(call my-dir)

 include $(CLEAR_VARS)

 LOCAL_MODULE := wxsqlite3_static

 LOCAL_MODULE_FILENAME := libwxsqlite3

 LOCAL_CFLAGS := \
 -DSQLITE_HAS_CODEC \
 -DCODEC_TYPE=CODEC_TYPE_AES128

 LOCAL_SRC_FILES := \
 include/sqlite3secure.c

 LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)

 LOCAL_C_INCLUDES := $(LOCAL_PATH)

 include $(BUILD_STATIC_LIBRARY)

 

在項目的Android.mk文件中添加支持

LOCAL_WHOLE_STATIC_LIBRARIES += wxsqlite3_static

 

LOCAL_SRC_FILES :=../../Classes/modules/SQLite3/sqlite3secure.c 

$(call import-module,external/sqlite3)

iOS支持

添加代碼目錄,找到我們剛才添加的那個文件夾,添加好后,將除sqlite3.h和sqlite3secure.c的所有文件都刪除引用

 

相關api函數接口

SQLite添加了加密解密功能后,使用方法如下:

1、 在調用sqlite3_open()函數打開數據庫后,要調用sqlite3_key()函數為數據庫設置密碼;

2、 如果數據庫之前有密碼,則調用sqlite3_key()函數設置正確密碼才能正常工作;

3、 如果一個數據庫之前沒有密碼,且已經有數據,則不能再為其設置密碼;

4、 如果要修改密碼,則需要在第一步操作后,調用sqlite3_rekey()函數設置新的密碼;

5、 設置了密碼的SQLite數據庫,無法使用第三方工具打開;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM