Cocos2d-x利用xxtea进行图片资源加密
在Cocos2d-x开发中,需要对图片资源加密,可以用xxtea,加密解密都行,密钥由自己来决定。思路就是事先把图片资源加密,然后在程序中使用的时候,在加载资源处先解密再使用。
Cocos2d-x已经帮我们封装成了xxtea.h和xxtea.cpp两个文件,在cocos2d/external/xxtea 里面,如果我们在程序中直接include是会出错的,因为这时候项目中还没添加这两个文件,需要我们手动添加,如下图:
1、加密部分
我是另外写了一个项目来实现的,通过遍历某个文件夹,把里面的资源加密。
//包含头文件
#include "xxtea/xxtea.h"bool EncryptOneResource(std::string path)
{//这里的path是通过FileUtils::getInstance()->fullPathForFilename(const std::string &filename)方法得到的全路径。if (path.empty())return false;ssize_t len = 0;//这里我用这个过期的方法getFileData才能成功,一开始用getDataFromFile怎么试都不行,不知道为啥unsigned char * fileData = FileUtils::getInstance()->getFileData(path, "rb", &len);//Data data = FileUtils::getInstance()->getDataFromFile( fullpath );// if (data.isNull())// return;unsigned char key[20] = "arsenal";xxtea_long ret_len = 0;unsigned char* newBuf = xxtea_encrypt(fileData, (xxtea_long)len, key, (xxtea_long)strlen(key), &ret_len);if(newBuf == nullptr)return false;std::string savepath = "xxxxx";//下面两种写文件的方式都行
// FILE *fp = fopen(savepath.c_str(), "wb+");
// fwrite(newBuf, ret_len, 1, fp);
// fflush(fp);
// fclose(fp);
// CC_SAFE_DELETE(newBuf);Data d;d.fastSet(newBuf, ret_len);FileUtils::getInstance()->writeDataToFile(d, savepath);return true;
}
2、解密部分
在CCImage.cpp里面修改源代码,
bool Image::initWithImageFile(const std::string& path)
{bool ret = false;_filePath = FileUtils::getInstance()->fullPathForFilename(path);ssize_t len;unsigned char* data = FileUtils::getInstance()->getFileData(_filePath, "rb", &len);xxtea_long ret_len;unsigned char key[100] = "arsenal";unsigned char* ret_data = xxtea_decrypt(data, (xxtea_long)len, key, strlen("arsenal"), &ret_len);Data result;result.fastSet(ret_data, ret_len);if (!result.isNull()){ret = initWithImageData(result.getBytes(), result.getSize());}return ret;
}bool Image::initWithImageFileThreadSafe(const std::string& fullpath)
{bool ret = false;_filePath = fullpath;ssize_t len;unsigned char* data = FileUtils::getInstance()->getFileData(_filePath, "rb", &len);xxtea_long ret_len;unsigned char key[100] = "arsenal";unsigned char* ret_data = xxtea_decrypt(data, (xxtea_long)len, key, strlen("arsenal"), &ret_len);Data result;result.fastSet(ret_data, ret_len);if (!result.isNull()){ret = initWithImageData(result.getBytes(), result.getSize());}return ret;
}
3、单独解密部分
bool DecryptOneResource(std::string path)
{//这里的path是通过FileUtils::getInstance()->fullPathForFilename(const std::string &filename)方法得到的全路径。if (path.empty())return false;ssize_t len = 0;unsigned char * fileData = FileUtils::getInstance()->getFileData(path, "rb", &len);unsigned char key[20] = "arsenal";xxtea_long ret_len = 0;unsigned char* newBuf = xxtea_decrypt(fileData, (xxtea_long)len, key, (xxtea_long)strlen(key), &ret_len);if(newBuf == nullptr)return false;std::string savepath = "xxxxx";FILE *fp = fopen(savepath.c_str(), "wb+");fwrite(newBuf, ret_len, 1, fp);fflush(fp);fclose(fp);CC_SAFE_DELETE(newBuf);return true;
}
Cocos2d-x利用xxtea进行图片资源加密相关推荐
- android图片资源加密解密,[原创]cocos2d游戏图片资源解密
0x00 序 之前遇到过一个有意思的cocos2d游戏.里面的图片资源全都加密了.今天突然想起来.整理一下发出来. 0x01 开干 ak 打开软件 发现是cococs游戏,并且资源文件里面全是mp3, ...
- 利用自定义的 ClassLoader 加密 Java Class 文件
本文演示利用自定义的 ClassLoader 加密 Java Class 文件 首先,我们定义一个需要被加密的java Class: classload.MyClassBase. 为了让客户端使用,需 ...
- cocos2dx 图片资源加密解密
转载自:http://www.taikr.com/article/600 下面就和大家来共享一下cocos2dx 图片资源加密解密的方法,如果对这个方法有疑问或者完善可以到社区里面发帖,来和大家一起进 ...
- android图片资源加密解密,Android下资源图片的加密和解密
apk文件使用解压工具就能看到drawable等资源,但是有些游戏中的图片资源却是无法看到的. 这个问题探索了许久-- [1]图片资源不放置在drawable文件下,放在assets中(但是解压apk ...
- 利用注释及自定义加密免杀Webshell
0x00:简介 此篇只讨论php,其实原理是相同的,本文的思路依然适用于其他语言 由于php7.1以后assert不能拆分了,所以此篇不使用assert函数作为核心,使用适用性更广的eval. 免杀顺 ...
- 攻击者利用Python 勒索软件加密 VMware ESXi 服务器
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Sophos 报道称,最近发现攻击活动利用基于 Python 的勒索软件变体攻击组织机构的 VMware ESXi 服务器并加密所有的虚拟磁盘. ...
- python 利用脚本命令压缩加密文件并删除源文件
python自身有一个比较好的包 tarfile以及zipfile都可以压缩文件,但是当我们需要加密压缩文件的时候,这两个包无法提供,根据官方资料 zipfile的setpassword 是无法设置密 ...
- 利用SEAL库进行加密的虹膜识别系统制作过程记录
正在制作一个利用C++编写的基于全同态加密的虹膜识别系统.中间遇到部分问题,记录如下: 1.记2021.1.25: 用SOCKET传递账户密码的时候,如下设置服务器的接收信息代码,会出现跳包,及接收到 ...
- cocos creator 图片资源加密
cocos creator 没有对资源进行加密,打包的资源很容易被扒,需要自己实现一套加密方式.这里简单记录下我使用的加密解密方法.只适用手游 native!!! 加密 加密算法: XOR 时机:在资 ...
最新文章
- python安装不上pyinstaller_记PyInstaller安装过程及问题解决
- Linux 网络编程(TCP)
- poj-1031-fence(不是我写的,我只是想看着方便)
- java tomcat日志中文乱码问题解决
- 基于WinSvr2016(TP)构建的“超融合技术架构”进阶篇
- 西安电子科技大学研究生计算机专业王宇平教授学生就业岗位,西安电子科技大学计算机学院导师信息情况...
- 程序员|那天下班回家,突然民警叫住我....
- Python实现抓取CSDN博客首页文章列表
- 惊呆了! | Spring Boot 使用 @Value 读取配置还能这样用
- UI素材|网站404页面有什么用处
- sendmsg返回值_[求助]怎么处理sendmessage的返回值
- 网络维护与管理作业3
- python3-基础2
- C语言要点系统复习三:scanf读取缓冲区的那些事
- mongodb 使用$lookup做多表关联处理
- python股票预测_利用Keras长短期记忆(LSTM)模型预测股票价格
- Liferay Portal CVE-2020-7961
- Hadoop(二)Hive原理解析
- 函数的重载与重载解析
- 网络基础系统红枫产线落地金华,助力打造千亿级产业集群!