在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进行图片资源加密相关推荐

  1. android图片资源加密解密,[原创]cocos2d游戏图片资源解密

    0x00 序 之前遇到过一个有意思的cocos2d游戏.里面的图片资源全都加密了.今天突然想起来.整理一下发出来. 0x01 开干 ak 打开软件 发现是cococs游戏,并且资源文件里面全是mp3, ...

  2. 利用自定义的 ClassLoader 加密 Java Class 文件

    本文演示利用自定义的 ClassLoader 加密 Java Class 文件 首先,我们定义一个需要被加密的java Class: classload.MyClassBase. 为了让客户端使用,需 ...

  3. cocos2dx 图片资源加密解密

    转载自:http://www.taikr.com/article/600 下面就和大家来共享一下cocos2dx 图片资源加密解密的方法,如果对这个方法有疑问或者完善可以到社区里面发帖,来和大家一起进 ...

  4. android图片资源加密解密,Android下资源图片的加密和解密

    apk文件使用解压工具就能看到drawable等资源,但是有些游戏中的图片资源却是无法看到的. 这个问题探索了许久-- [1]图片资源不放置在drawable文件下,放在assets中(但是解压apk ...

  5. 利用注释及自定义加密免杀Webshell

    0x00:简介 此篇只讨论php,其实原理是相同的,本文的思路依然适用于其他语言 由于php7.1以后assert不能拆分了,所以此篇不使用assert函数作为核心,使用适用性更广的eval. 免杀顺 ...

  6. 攻击者利用Python 勒索软件加密 VMware ESXi 服务器

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 Sophos 报道称,最近发现攻击活动利用基于 Python 的勒索软件变体攻击组织机构的 VMware ESXi 服务器并加密所有的虚拟磁盘. ...

  7. python 利用脚本命令压缩加密文件并删除源文件

    python自身有一个比较好的包 tarfile以及zipfile都可以压缩文件,但是当我们需要加密压缩文件的时候,这两个包无法提供,根据官方资料 zipfile的setpassword 是无法设置密 ...

  8. 利用SEAL库进行加密的虹膜识别系统制作过程记录

    正在制作一个利用C++编写的基于全同态加密的虹膜识别系统.中间遇到部分问题,记录如下: 1.记2021.1.25: 用SOCKET传递账户密码的时候,如下设置服务器的接收信息代码,会出现跳包,及接收到 ...

  9. cocos creator 图片资源加密

    cocos creator 没有对资源进行加密,打包的资源很容易被扒,需要自己实现一套加密方式.这里简单记录下我使用的加密解密方法.只适用手游 native!!! 加密 加密算法: XOR 时机:在资 ...

最新文章

  1. python安装不上pyinstaller_记PyInstaller安装过程及问题解决
  2. Linux 网络编程(TCP)
  3. poj-1031-fence(不是我写的,我只是想看着方便)
  4. java tomcat日志中文乱码问题解决
  5. 基于WinSvr2016(TP)构建的“超融合技术架构”进阶篇
  6. 西安电子科技大学研究生计算机专业王宇平教授学生就业岗位,西安电子科技大学计算机学院导师信息情况...
  7. 程序员|那天下班回家,突然民警叫住我....
  8. Python实现抓取CSDN博客首页文章列表
  9. 惊呆了! | Spring Boot 使用 @Value 读取配置还能这样用
  10. UI素材|网站404页面有什么用处
  11. sendmsg返回值_[求助]怎么处理sendmessage的返回值
  12. 网络维护与管理作业3
  13. python3-基础2
  14. C语言要点系统复习三:scanf读取缓冲区的那些事
  15. mongodb 使用$lookup做多表关联处理
  16. python股票预测_利用Keras长短期记忆(LSTM)模型预测股票价格
  17. Liferay Portal CVE-2020-7961
  18. Hadoop(二)Hive原理解析
  19. 函数的重载与重载解析
  20. 网络基础系统红枫产线落地金华,助力打造千亿级产业集群!

热门文章

  1. 为什么地球的生物都是碳基生命?科学家:大自然环境选择的结果
  2. AtCoder Beginner Contest 151
  3. 《人类简史》十一、工业革命——一场永远的革命
  4. VisualGDB可视化调试STL
  5. MPU6500功能说明
  6. java游戏魔塔20层_魔塔全攻略之一——前20层
  7. 全球与中国漏磁清管器市场深度研究分析报告
  8. 2022-2028年全球与中国射频识别打印机行业深度分析
  9. 标杆案例|中海数字化转型:以客户为中心,打造客户全域旅程数据平台
  10. mx150 宏碁swift3_宏碁Swift 3评测:炫美轻薄还有MX150独显