手机游戏当中的数据存储是一个重要的课题。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

修改的方式大致如下

cocos2d-x中使用可加密Sqlite存储玩家数据的更多相关文章

  1. Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表,以及同步和异步执行模式)

    系列文章导航 Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表) Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数) Adobe ...

  2. 浅谈利用SQLite存储离散瓦片的思路和实现方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在多个项目中涉及到互联网地图的内网显示,通过自制工具完成了互联 ...

  3. Infinispan 8 中新的 Redis 缓存存储实现

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/147.html nfinispan 8 包含了一个新的在 Redis k/ ...

  4. ASP.NET中的MD5加密

    新人冒泡,打今起在园子里算是开博了,先来写点关于基础性的东西 为以后的写其他的文章做准备. 今天就先来说说MD5加密与在ASP.NET中如何实现MD5加密. MD5加密简单的说就是把一段明文 通过某种 ...

  5. Oracle中对列加密的方法

    Oracle中对列加密的方法 2011-12-22 17:21:13 分类: Linux Oracle支持多种列加密方式: 1,透明数据加密(TDE):create table encrypt_col ...

  6. [ Android 五种数据存储方式之三 ] —— SQLite存储数据

    SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使用了 ...

  7. [转]浅谈利用SQLite存储离散瓦片的思路和实现方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在多个项目中涉及到互联网地图的内网显示,通过自制工具完成了互联 ...

  8. ASP.NET中几种加密方法

    下面就是ASP.NET中几种加密方法.加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样. MD5的全称是Message-Digest ...

  9. java工具类学习,系统中用户密码加密总结

    现在项目,用户注册登录部分很少有涉及到了,原因:现在热门开发框架都已经在底层帮我们做了一套用户注册,密码加密,登录认证,权限控制,缓存数据等基本功能. 这有利于项目的快速完成,只需要搬砖码畜们专注于业 ...

随机推荐

  1. Eclipse连接到My sql数据库之前操作

    Eclipse连接到My sql数据库之前操作 1:首先是安装My sql数据库(为了减少你的麻烦,按照下面的连接,下载即可)百度云链接:http://pan.baidu.com/s/1mitWmbm ...

  2. 详解Bootstrap媒体对象

    在web页面中,图片居左,内容居右排列,是非常常见的效果,它也就是媒体对象,它是一种抽象的样式,可以用来构建不同类型的组件,在bootstrap框架中其对应的版本文件如下: LESS: media.l ...

  3. php三种基础算法:冒泡,插入和快速排序法

    $array = array(2,3,5,6,9,8,1); //冒泡排序思想,前后元素比较 function sort_bulldle($array){ $num = count($array); ...

  4. linux 下查找大于100M的文件(转)

    命令行如下 find . -type f -size +1000000k Linux系统下查找大文件或目录的技巧 当硬盘空间不够时,我们就很关心哪些目录或文件比较大,看看能否干掉一些了,怎么才能知道呢 ...

  5. 还有人在用SQL Server 2000或2005吗? 2014来了!

    你的项目,还在用SQL Server 2000或2005吗? 很多人甚至还没有来得及用过SQL Server 2008,SQL Server 2012,现在SQL Server 2014已经出来了! ...

  6. zz Windows 10安装教程:硬盘安装Win10 系统步骤(适合32位和64位)

    Windows 10安装教程:硬盘安装Win10 系统步骤(适合32位和64位) Posted on 2015年01月28日 by 虾虾 22 Comments   最新的Windows 10 MSD ...

  7. Open vSwitch实践——VLAN

    # virt-clone --original=centos65 --name=vm2 --file=vm2.qcow2 正在克隆 centos65.qcow2                     ...

  8. 奇怪吸引子---ShimizuMorioka

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  9. java知识大全积累篇

    原文出自:http://www.importnew.com/14429.html 构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使 ...

  10. u3d动态加入模型

    楼层一层一层的加,把模型分开,弄成prefab放到Resourse文件夹里,在代码里用Instantiate(Resources.Load("模型名字") as GameObjec ...