使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码加密

C语言实现Base64编解码(加密和解密) Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3 * 8 = 4 * 6 = 24),然后把6Bit再添加两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。Base64的编码转换表。字符串 - hello。 阅读详情
上一篇介绍了,如何使用Cocos2dX自带的CCUserDefault 存储游戏数据,那么Himi也提到此方式保存的为xml格式并且数据明文显示=。 =,这个对于我们开发者来说太暴漏了有木有! so~本篇Himi分享如何使用经典Base64算法对CCUserDefault进行数据编码形成一种简单的加密形式!

OK,关于base64的介绍,不再赘述,还不太熟悉的童鞋请点击以下连接阅读:
http://baike.baidu.com/view/469071.htm  (百度百科的 base64详细解释)

如果对于Cocos2dX自带的CCUserDefault类不太熟悉的请点击如下连接:
游戏存储之Cocos2dX自带CCUserDefault类详解;

对Base64有了基础认识后我们就开始进入正题,首先,我们针对Cocos2dX使用c++版的base64编码文件:
base64.h以及base64.cpp  文件下载导入项目中:
DataBase64Himi.zip  (647 字节)   http://115.com/file/dpw4wf4e

然后Himi封装好了两个函数:(这里我们假设存储游戏金币)
首先.h中,定义枚举变量 (备注1)

  1. enum{
  2.     DATA_GOLD,//金币

  3. };
复制代码

然后.h定义两个函数: (备注2)

  1. //存储数据
  2. void saveDataByKeyValue(int iKey, string sValue);

  3. //读取数据
  4. int loadDataByKey(int iKey);
复制代码

最后.cpp中函数具体实现代码: (备注3)

  1. //存储
  2. void HelloWorld::saveDataByKeyValue(int iKey, string sValue){
  3.     char buffer[32];
  4.     sprintf(buffer, "%s%d", "Himi",iKey);
  5.     CCLog("----------存储");
  6.     CCLog("存储之前数据 key:index: Himi%i, value: %s  ",iKey,sValue.c_str());
  7.     string sKey = himiSaveData(reinterpret_cast(sValue.c_str()), sValue.length());
  8.     CCLog("存储编码后的数据 key:index: Himi%i, value: %s  ",iKey,sKey.c_str());
  9.     CCUserDefault::sharedUserDefault()->setStringForKey(buffer, sKey);
  10.     CCUserDefault::sharedUserDefault()->flush();
  11. }

  12. //读取
  13. int HelloWorld::loadDataByKey(int iKey){
  14.     CCLog("----------读取");
  15.     char buffer[32];
  16.     sprintf(buffer, "%s%d", "Himi",iKey);

  17.     string s = CCUserDefault::sharedUserDefault()->getStringForKey(buffer);
  18.     CCLog("解码前的数据: %s  ",s.c_str());
  19.     string parseKey = himiParseData(s);
  20.     CCLog("解码后的数据: %s  ",parseKey.c_str());
  21.     return atoi(parseKey.c_str());
  22. }
复制代码

OK,这里开始逐步解释一下:
首先说下备注2,这里定义的两个方法,第一个函数:

  1. //存储数据
  2. void saveDataByKeyValue(int iKey, string sValue);
复制代码

其中第一个函数传入一个int值,为什么要这样,原因是这样方便与结合枚举变量(备注1)来进行存储,这样使用的时候非常简化你的代码和步骤;第二个函数是值,这里我封装成string,这样为了更好的结合我们的base64编码!这点在(备注3)中体现!

第二个函数:

  1. //读取数据
  2. int loadDataByKey(int iKey);
复制代码

这个函数没什么好说的,传入的参数int,枚举变量即可!至于返回值是int 是方便程序中使用!

OK,那么备注3对于两个封装函数中的实现需要说明的有3点:
1.  将传入的int值(key)转化成char*类型,因为cocos2dx中并没有itoa这样的方法(原因上一篇有介绍),所以这里我采用   char buffer[32];    sprintf(buffer, “%s%d”, “Himi”,iKey);  方式进行将int转化char*类型;

2. 存储的时候我们步骤是:string值进行base64编码,然后存储到xml中;

3.  将int转化string的时候我在枚举变量前加入”Himi”,大家不喜欢可以换成自己喜欢的,但是千万不要删除!因为一旦你删除掉,然后将存储后的形式为: <1>数据  这样会造成你读取数据出错!

读取数据步骤:根据key读取xml的编码过的string,然后base64解码出原始值,最终atoi转化成int扔出!
这其中应该说没什么难于理解的,所以这里不再赘述了;

那么下面我们来看这两个函数如何使用:

  1. //base64编码存储
  2. this->saveDataByKeyValue(DATA_GOLD, "10000");

  3. //base64读取数据
  4. this->loadDataByKey(DATA_GOLD);
复制代码

代码是不是用起来很方面呢!哈哈,这就对啦,不能因为编码弄得乱78糟~OK,运行项目,控制台你将看到如下显示:

  1. Cocos2d: cocos2d: cocos2d-1.0.1-x-0.12.0
  2. Cocos2d: cocos2d: GL_VENDOR:     Imagination Technologies
  3. Cocos2d: cocos2d: GL_RENDERER:   PowerVR SGX 543
  4. Cocos2d: cocos2d: GL_VERSION:    OpenGL ES-CM 1.1 IMGSGX543-63.14.2
  5. Cocos2d: cocos2d: GL_MAX_TEXTURE_SIZE: 4096
  6. Cocos2d: cocos2d: GL_MAX_MODELVIEW_STACK_DEPTH: 16
  7. Cocos2d: cocos2d: GL supports PVRTC: YES
  8. Cocos2d: cocos2d: GL supports BGRA8888 textures: NO
  9. Cocos2d: cocos2d: GL supports NPOT textures: YES
  10. Cocos2d: cocos2d: GL supports discard_framebuffer: YES
  11. Cocos2d: cocos2d: compiled with NPOT support: NO
  12. Cocos2d: cocos2d: compiled with VBO support in TextureAtlas : NO
  13. Cocos2d: 此项目已存在保存数据的xml文件
  14. Cocos2d: 存储之前数据 key:index: 0, value: 10000
  15. Cocos2d: 存储编码后的数据 key:index: 0, value: MTAwMDA=
  16. Cocos2d: 解码前的数据: MTAwMDA=
  17. Cocos2d: 解码后的数据: 10000
复制代码

存储的文件内容截图如下:

1232.png 

OK,最后呢,我要说一点,虽然我们使用base64可以对数据进行编码,但是对于不懂程序的用户来说基本无法修改,但是对于稍微有了解 base64编码的童鞋,那么直接可以在线解码你的这个编码,所以呢!最后Himi提醒大家,使用base64当中,大家可以书写一些算法结合 base64来使用!这样即使明文也不怕,至于怎么做,Himi就不再多说了 哈哈!

本篇源码下载: base64SaveDataForCocos2dx.zip  (691 字节)  http://115.com/file/bejbbke3

原文链接: http://blog.163.com/zhoulong19880518@126/blog/static/6070970220129851614575/
2024年大数据最新cocosCreator 之 crypto-es数据加密_cocos使用node-rsa(3),大数据开发性能优化推荐书 加密后的数据: U2FsdGVkX1/cqGU/G7xGVONeYS4R6sRjZYkMeAmUcdQ=console.log(“加密后的数据:”, value_1);console.log(“解密后的数据:”, value_2);加密前的数据: Thank you oops-framework。解密后的数据: Thank you oops-framework。console.log(“加密前的数据:”, value);加密前的数据: Hello Encrypt。 阅读详情

相关推荐

cocos2d-x 实现3种数据加密方法的源码

cocos2d-x 实现3种数据加密MD5/SHA1/BASE64源码

【JavaScript 逆向】Hook → Tampermonkey 案例分析

JavaScript 逆向中 Hook 技术的讲解,浏览器插件 Tempermonkey 的安装使用,基本案例分析

Yy_Rose的博客 4876

cocos2d-x 3.X 接收图片 base64 转码显示

cocos2d-x 3.X 接收图片 base64 转码显示,最终图片流显示在 Sprite 上

cocos2dx openssl base64编码解码

1 cocos2dx自带base64 #include <base/base64.h> std::string OpensslTool::baseBase64Decode(const char *in) { int inLen = strlen(in); unsigned char *out ; int outLen = cocos2d::base64D...

karaa的博客 563

cocos2dx资源加密与压缩

zip的读取解压,xxtea对资源的加密

kaggle竞赛平台上数据集下载详解

从kaggle 网站上下载数据集既保证了速度又避免了网络的不稳定造成下载失败问题。该平台也可以上传代码作为自己的代码库,不过本人更习惯将代码上传到github上。希望本人整理的kaggle库使用技巧能够帮助到正在阅读本博客的你。此外还有一篇博客针对kaggle数据集下载问题的几个问题的相关文章进行了整理【博客链接】。

li1784506的博客 2万+

Cocos2d-x 资源加密解密实践总结

本文乃Siliphen原创,转载请注明出处:http://blog.youkuaiyun.com/stevenkylelee  本文针对的是cocos2d-x 3.2 和 3.4 版本进行研究。 做加密解密的思路 加密解密算法的简单介绍 首先,加密解密应该是一个单独的话题,一般不会涉及具体使用的引擎、框架和技术。 加密算法有Base64,DES等。 Ba

Siliphen Labs 1万+

飞塔防火墙认证绕过漏洞(CVE-2022-40684)深度剖析与实战复现

本文深度剖析了Fortinet飞塔防火墙高危认证绕过漏洞CVE-2022-40684的原理与影响。该漏洞允许攻击者通过构造包含特定Forwarded头和User-Agent的HTTP请求,无需凭证即可绕过认证,以管理员身份访问设备。文章详细演示了从环境搭建到实战复现,最终植入SSH密钥获取控制权的完整过程,并提供了漏洞挖掘技巧与关键防御建议。

d6e7f8g9h的博客 708

Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码加密

对Cocos2dX使用c++版的base64编码文件: #include "DataBase64Himi.h" static const std::string dataChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; static inline bool...

wangxh88的博客 336

医疗领域BGE-M3模型微调全流程:从数据准备到效果评估

本文详细介绍了医疗领域BGE-M3模型的微调全流程,从数据准备到效果评估。通过医疗数据微调,BGE-M3模型在临床问答、病历检索等场景中表现显著提升,能够准确理解医学术语之间的细微差别。文章还提供了实战练习代码和效果评估指标,帮助开发者快速掌握医疗文本嵌入模型的应用技巧。

weixin_29098367的博客 282

三菱CNC数据采集实战:从SDK安装到C#代码调试全流程(附完整资源包)

本文为C#开发者提供了三菱CNC数据采集的完整实战指南。详细介绍了从获取并安装核心A2协议SDK、配置Visual Studio开发环境,到理解COM接口文档、封装C#通信类,并构建具备多设备连接与定时采集功能的WinForms应用程序的全流程。文章重点分享了网络调试、异常处理及性能优化等关键实战经验,帮助开发者高效打通工业自动化数据采集链路。

oauth7security的博客 707

Cocos2d-X 学习笔记 16 使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码加密

转载来至:http://blog.163.com/zhoulong19880518@126/blog/static/6070970220129851614575/ 上一篇介绍了,如何使用Cocos2dX自带的CCUserDefault 存储游戏数据,那么Himi也提到此方式保存的为xml格式并且数据明文显示=。 =,这个对于我们开发者来说太暴漏了有木有! so~本篇Himi分享如

huahua12300的专栏 2010

计算机视觉安防监控升级:人脸识别与行为异常检测

计算机视觉安防监控升级:人脸识别与行为异常检测 ,人工智能,计算机视觉,大模型,AI,本文将深入探讨人脸识别与行为异常检测技术在安防监控中的应用,包括技术原理、算法实现、应用场景以及面临的挑战与解决方案。通过实际案例和代码示例,帮助读者更好地理解和掌握这些技术,为推动安防监控系统的智能化升级提供参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 23万+

【iOS-cocos2d-X 游戏开发之六】使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码!

转载自【黑米GameDev街区】原文链接: http://www.himigame.com/iphone-cocos2dx/653.html 上一篇介绍了,如何使用Cocos2dX自带的CCUserDefault 存储游戏数据,那么Himi也提到此方式保存的为xml格式并且数据明文显示=。 =,这个对于我们开发者来说太暴漏了有木有! so~本篇Himi分享如何使用经典Base64算法对C

Keep Moving 654

【系统架构设计师】论文模板样例:论软件系统架构风格

本人于年月参与项目,该系统为*,在该项目组中我担任系统架构师岗位,主要负责系统整体架构设计。本文以该车联网项目为例,主要讨论了软件架构风格在该项目中的具体应用。底层架构风格我们采用了虚拟机风格中的解释器,因该公交共有几十种不同的数据协议,使用解释器风格可以满足整车数据协议兼容性需求;中间层关于应用层的数据流转采用了独立构件风格中的隐式调用,以减低系统间耦合度、简化软件架构,提高可修改性方面的架构属性;应用系统层采用了B/S的架构风格,统一解决公交行业性难题“实施推广难、维护难”问题。

数据知道的博客 9927

UG\NX二次开发 找不到指定的dlx文件(Specified Dlx file not found)

有群友问:用Ctrl+U运行的时候就报错,找不到指定的dlx文件Specified Dlx file not found。怎么处理。

王牌飞行员_里海的博客 1130

Cocos2d-x学习(二十三):Base64解码

使用过Tiled的朋友应该都有所了解,Tiled生成的tmx格式的文件其实就是xml,唯一特殊的地方就是tmx文件中都会有一个或者多个"data"的节点,用来存放Tiled的块数据!类似于这样的格式 &lt;map version="1.0" orientation="orthogonal" width="40" height="40" tilewidth="32" tile

445822357 751

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【Cocos2d-x】数据加密解密

Cocos2d-x 数据加密解密

4834

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

cocoscreator 资源加密

当我们做完一个游戏以后,需要对自己图片资源做一定的加密保护,不让别人轻易的破解。cocos官方没有提供资源加密功能,下面提供一种交简单的加解密方案。 一、 生成加密脚本 加密脚本:encode.py(这个脚本会生成加密后的图片替换原始图片) # -*- coding:UTF-8 -*- #该脚本用于加密png图片 使用python3以上版本解释执行 __author__ = "ChenGuanzhou" import os import time CUR_DIR = os.getcwd() + "\\b

qq_30527579的博客 3934

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

cocos2dx 3.X 接收图片 base64 转码显示

cocos2d-x 3.X 接收图片 base64 转码显示。以及转码后图片流的显示

IronYoung_不惧未来 7889

【iOS-cocos2d-X 游戏开发之六】使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据加密!...

 本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2dx/659.html   上一篇介绍了,如何使用Cocos2dX自带的CCUserDefault 存储游戏数据,那么Himi也提到此方式保存的为xml格式并且数据明文显示=。 =,这个对于我们开发者来说太暴漏了...

weixin_33694172的博客 192

cocos2d-x加密MD5/SHA1/BASE64

一、常用加密情况有三种 : 1. 资源加密,如图片,音乐(防盗版) 2. 网络传输过程中的加密,避免被人拦截并修改数据(防作弊) 3. 游戏数据加密(防作弊) 二、加密作用:防止盗版,防止作弊。 三、常见加密方式 : MD5 MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Com

Norton的专栏 9307

【iOS-cocos2d-X 游戏开发之四】使用Base64算法对Cocos2dX自带CCUserDefault游戏存储数据编码

转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2dx/659.html 上一篇介绍了,如何使用Cocos2dX自带的CCUserDefault 存储游戏数据,那么Himi也提到此方式保存的为xml格式并且数据明文显示=。 =,这个对于我们开发者来说太暴漏了有木有! so~本篇Himi分享如何使用经典Base6

code life 811
上一篇: 升级Xcode到6.1之后使用iPhone6真机测试cocos2d-x报错不支持arm64的解决方案,Undefin ...
下一篇: 好东西!sqlite3中BLOB数据类型存储大对象运用示例
iphone86
博客等级 码龄15年 3粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值