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

修改的方式大致如下

转载于:https://www.cnblogs.com/dyllove98/p/3249405.html

cocos2d-x中使用可加密Sqlite存储玩家数据相关推荐

  1. MySQL中一个B+树能存储多少数据

    MySQL聚簇索引的存储结构 MySQL中InnoDB页的大小默认是16k.也可以自己进行设置.(计算机在存储数据的时候,最小存储单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/ ...

  2. ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置

    目录 ATECC508A芯片开发笔记(九):加密读写508芯片数据的流程及相应设置 1.Encrypted Read 1.1 Standard Encrypted Read Flow 1.2 Simp ...

  3. FISCO BCOS 生态中的数字身份组件 WeIdentity 用 Sqlite 存储 WeId | Rust 学习

    1 什么是 数字身份标识与数字身份体系? 首先,让我们来看下什么是分布式数字身份标识(DID): 分布式数字标识符(DID)是一种新型标识符,用以标识可验证的分布式的数字身份. DID的控制者决定标识 ...

  4. Android studio+SQLCipher加密SQLite数据库的几个坑

    Android studio SQLCipher加密SQLite数据库的几个坑 前言:Android 自带的SQLite数据库可以用于数据存储,但是,大家都知道其数据是存储于手机的data/data/ ...

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

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

  6. RHCSA 系列(六): 使用 Parted 和 SSM 来配置和加密系统存储

    在本篇文章中,我们将讨论在 RHEL 7 中如何使用传统的工具来设置和配置本地系统存储,并介绍系统存储管理器(也称为 SSM),它将极大地简化上面的任务. RHCSA: 配置和加密系统存储 – Par ...

  7. 在ORACLE中对存储过程加密

    在ORACLE中对存储过程加密 2007年08月04日 星期六 下午 04:06 1 创建存储过程       create or replace procedure lb_test2 as begi ...

  8. Navicat使用教程:SQL Server中的磁盘加密

    转载来源 :Navicat使用教程:SQL Server中的磁盘加密 : http://www.safebase.cn/article-255744-1.html 摘要: Navicat Premiu ...

  9. php sqlite存入文件夹,PHP_小文件php+SQLite存储方案,我们草根站长购买的虚拟主机 - phpStudy...

    小文件php+SQLite存储方案 我们草根站长购买的虚拟主机往往都有文件数量限制,大量小文件占用大量资源,落伍精华区也有兄弟推荐豆瓣的解决方法,但是要有主机权限.只能另装思路,采用php+SQLit ...

最新文章

  1. matlab小数取整函数
  2. C# AE放大缩小地图全局显示功能
  3. html除左侧浮动,html清除浮动的6种方法示例
  4. 微软过冬的三大姿势:裁员,回购400亿美元股票,在中国开合资公司
  5. [css] 你有使用过字体图标吗?它有什么好处?
  6. 通俗易懂告诉你CPU/GPU是什么?
  7. RedisTemplate常用集合使用说明-opsForValue(二)
  8. 操作系统之进程管理:6、调度算法(先来先服务FCFS、最短作业优先SJF、最高响应比优先HRRN、时间片轮转法、优先级调度、多级反馈队列)
  9. 修改华为服务器管理口地址,修改华为服务器管理口地址
  10. 这个可能是比你女朋友陪你时间都要久的本子
  11. 初中数学最全几何模型_初中数学几何模型秘籍.pdf
  12. RNN(LSTMGRU)文本分类(PaddlePaddle2.0)
  13. 助焊剂各成分作用浅析
  14. 原理 拉普拉斯金字塔_十三 高斯金字塔和拉普拉斯金字塔
  15. vue-网页Logo标题及矢量图标
  16. 集腋成裘-15-MongoDB系列-02Find详细
  17. EXCEL中数据分析涉及的一些操作
  18. HTML的子代选择器
  19. MySQL设置自增初始值和步长
  20. 路由配置与管理——静态路由配置与管理

热门文章

  1. 通信中的ATM cell:ATM信源结构
  2. TCP和UDP协议的特点和区别详解
  3. Unity3D基础35:五彩砖块
  4. Wannafly挑战赛9: D. 造一造(组合数)
  5. OPNET网络仿真分析-1.1.1、网络仿真简介
  6. jQuery Mobile中按钮button的data-*选项
  7. 语义分割和实例分割概念
  8. 贺利坚老师汇编课程74笔记:按下esc键改变显示颜色
  9. 01-操作数组的方法
  10. 解决微信小程序安卓手机访问不到图片,无法显示图片