cocos2dx之CCUserDefault及其数据进行加密解密
2014-02-11 09:42
357 查看
CCUserDefault是Cocos2d-x引擎提供的持久化方案,其作用是存储所有游戏通用的用户配置信息,例如音乐和音效配置等。为了方便起见,有时我们也可以用CCUserDefault来存储金币数目这种简单的数据项。
CCUserDefault可以看做一个永久存储的字典,本质是一个XML文件,将每个键及其对应的值以节点的形式存储到外存中。值只支持int和float等基本类型.
这里要注意,
CCUserDefault中有个 flush()的函数,这个用来将数据写入xml文件中,也就是说当你使用setXX的一些函数后记得提交(调用一下flush函数)
XML的一个很严重的问题是明文存储,存储在外部的数据一旦被截获,就将直接暴露在攻击者面前,小则篡改用户数据,大则泄露用户隐私信息。因此,对存储在文件中的信息加密不可忽视。
幸运的是,前面我们已经设计好了序列化和反序列化过程,只要在其中加入合适的加密和解密算法,即可保证我们的数据不会被轻易窃取。这里我们只使用一个简单的编码轮换来加密,相关代码如下:
CCUserDefault可以看做一个永久存储的字典,本质是一个XML文件,将每个键及其对应的值以节点的形式存储到外存中。值只支持int和float等基本类型.
CCUserDefault::sharedUserDefault()->setBoolForKey("exit", true); CCUserDefault::sharedUserDefault()->flush();//这行一定要加上,不然下次启动游戏的时候,该数据就没有保存。 bool bexit = CCUserDefault::sharedUserDefault()->getBoolForKey("exit");
这里要注意,
CCUserDefault中有个 flush()的函数,这个用来将数据写入xml文件中,也就是说当你使用setXX的一些函数后记得提交(调用一下flush函数)
XML的一个很严重的问题是明文存储,存储在外部的数据一旦被截获,就将直接暴露在攻击者面前,小则篡改用户数据,大则泄露用户隐私信息。因此,对存储在文件中的信息加密不可忽视。
幸运的是,前面我们已经设计好了序列化和反序列化过程,只要在其中加入合适的加密和解密算法,即可保证我们的数据不会被轻易窃取。这里我们只使用一个简单的编码轮换来加密,相关代码如下:
void encode(string &str) { for(int i = 0; i < str.length(); i++) { int ch = str[i]; ch = 0xff & (((ch & (1 << 7)) >> 7) & (ch << 1)); str[i] = ch; } } void decode(string &str) { for(int i = 0; i < str.length(); i++) { int ch = str[i]; ch = 0xff & (((ch & (1)) << 7) & (ch >> 1)); str[i] = ch; } }
相关文章推荐
- cocos2d学习
- 【cocos2d-x从c++到js】15:傀儡构造函数 推荐
- win7 64位上cocos2dx2.0.4移植android的全过程
- 关于cocos2dx多点触控的问题
- Cocos2d-x设计模式之九:委托和委托设计模式
- Cocos2d-x设计模式之八:中介者模式
- 深入分析Cocos2d-x 2.0中的“纹理”和精灵-沈大海cocos2d-x教程20
- cocos 2dx 一 核心类关系
- cocos2d-x 2.2.1 使用列表初始化vector错误 的解决方法
- cocos2dx进阶学习之CCTMXTiledMap
- cocos2dx进阶学习之CCTMXTiledMap
- cocos2d-x - 2d跑酷游戏地图素材(TiledMap)
- cocos2dx之Box2D
- cocos2d-x的内存管理
- cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap
- cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap
- cocos2d-x游戏开发系列教程-超级玛丽06-CMGameScene
- cocos2d-x游戏开发系列教程-超级玛丽06-CMGameScene
- cocos2dx之一些宏的作用
- cocos2d-x游戏开发系列教程-超级玛丽05-CMMenuScene