cocos2d-x中使用可加密Sqlite存儲玩家數據


 


手機游戲當中的數據存儲是一個重要的課題。cocos2d-x發展到現在的版本2.1.4,已經直接實現了對sqlite的支持(extensions/LocalStorage),這對我們一般的數據存儲已經夠用了。不過sqlite存儲的數據是明文的,無論是誰都可以輕易破解。因此我們需要一種方法對數據進行加密。萬幸的是,已經有人為我們提供了很方便的庫來完成這個工作。這個項目的網站是<a target="_blank" href="http://sqlcipher.net/>http://sqlcipher.net/"這里簡單記錄一下將其整合到cocos2d-x的步驟。

調用機制

cocos2d-x調用sqlite存儲數據的類是extensions/LocalStorage,在android上是LocalStorageAndroid,后者是使用JNI實現的。調用本身是很簡單的,同時在cocos2d-x js binding中也實現了綁定,可以在js層直接完成存取操作。

sqlcipher項目的加密算法是openssl,使用方法是在創建和生成sqlite數據庫時加入一個密碼。

IOS版本的嵌入方法

根據http://sqlcipher.net/ios-tutorial/可以嵌入sqlcipher項目。下面簡單重現一下步驟。

下載所需依賴

openSSL

http://www.openssl.org/source/openssl-1.0.0e.tar.gz

SQLCipher

git clone https://github.com/sqlcipher/sqlcipher.git

openSSL-Xcode

git clone https://github.com/sqlcipher/openssl-xcode.git

在xcode中增加sourceTree

在項目中增加子項目

在項目->target->build parse中增加依賴

target Dependencies

link binary with libraries

這里記得要去掉libsqlite3.dylib

設置build-settings

首先是searchpath,記住要選擇recursive,否則會編譯失敗

增加C Flags

在項目的C++代碼中使用密碼

注意事項

如果以前已經存儲過sqlite文件,那么必須刪除sqlite文件才能正常使用。ios模擬器的存檔文件是在

android嵌入

android中實際使用的是localStorageAndroid。同樣的我們可以在以下網址看到使用方法http://sqlcipher.net/sqlcipher-for-android/

 

簡單步驟

下載對應包

https://s3.amazonaws.com/sqlcipher/SQLCipher+for+Android+2.2.0.zip

刪除不需要的文件后大概應該是這個樣子

在assets里面是icudt46l.zip

導入項目

把幾個jar包復制到libs目錄下,並且在java build path中增加它們。

然后在build_native.sh里面增加把幾個so復制到包里的操作。(因為cocos2dx編譯的時候會刪除掉libs/armeabi目錄,直接復制進去是不行的)


SQLCIPHER="/Users/bigbang003/develop/third-sdks/SQLCipher"
cp -rf $SQLCIPHER/libs/armeabi/* "$APP_ANDROID_ROOT"/libs/armeabi
cp -rf $SQLCIPHER/assets/icudt46l.zip "$APP_ANDROID_ROOT"/assets

最后修改Cocos2dxLocalStorage.java

修改的方式大致如下


 


免責聲明!

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



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