安卓打包的apk文件只是做了简单的压缩,通过解压缩可以获取资源文件,如果不想图片资源被别人看到,那么可以对图片进行加密。

cocos2d-x提供了xxtea加密和解密算法,先将图片进行加密,这样就打不开图片了,然后在CCImage解析图片的时候进行解密即可。

一、下载quick-cocos2d-x

quick-cocos2d-x封装了一套加密的工具,先下载quick-cocos2d-x,git地址https://github.com/dualface/v3quick。

解压之后把bin目录拷贝到我们的cocos2d-x工程根目录。

二、加密

quick-cocos2d-x提供了pack_files命令,可以将图片进行加密,加密算法用的是xxtea,你可以到cocos2d-x\external\xxtea目录下查看。

到bin目录打开命令行窗口,执行pack_files.bat -h 可以查看pack_files的使用方法。

编写打包资源脚本

::res_pack.batset DSRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\res
set ESRC=E:\Cocos2d\Cocos2d-x\Projects\Game_Lua\assetscd binpack_files.bat -i %DSRC% -o %ESRC% -ek 123456 -es test

加密后的图片文件:

打开游戏则会报错,unsupport image format,因为每种图片的前面一些字节是这种图片类型的标记,比如png的前面8个字节固定是0x89,0x50,0x4e,0x47,0x0d,0x0a,0x1a,0x0a。因为已经被加密了,所以识别不了图片格式。

二、解密

所有图片的加载都封装在CCImage类的initWithImageFile和initWithImageFileThreadSafe方法。

// initWithImageFileData data = FileUtils::getInstance()->getDataFromFile(_filePath);if (!data.isNull()){ret = initWithImageData(data.getBytes(), data.getSize());}

封装一个解密方法,参数是Data类型的,然后再用解密后的数据去加载图片。

void Image::image_decrypt(Data *data)
{const char* key = "123456";const char* sign = "test";unsigned char* dataBytes = data->getBytes();ssize_t dataLen = data->getSize();ssize_t signLen = strlen(sign);ssize_t keyLen = strlen(key);if (strncmp(sign, (const char*)dataBytes, signLen) != 0){return;}xxtea_long retLen = 0;unsigned char* retData = xxtea_decrypt(dataBytes+signLen, dataLen-signLen, (unsigned char*)key, keyLen, &retLen);data->fastSet(retData, retLen);
}

分别在initWithImageFile和initWithImageFileThreadSafe方法中调用。

至此资源加密完成。

Cocos2d-x客户端资源加密相关推荐

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

    本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee 本文针对的是cocos2d-x 3.4 版本进行研究. 做加密解密的思路 加密解密算法 ...

  2. cocos2dx游戏资源加密之XXTEA

    在手机游戏当中,游戏的资源加密保护是一件很重要的事情. 我花了两天的时间整理了自己在游戏当中的资源加密问题,实现了跨平台的资源流加密,这个都是巨人的肩膀之上的. 大概的思路是这样的,游戏资源通过XXT ...

  3. CocoStudio游戏发布后资源加密大致实现思路

    截 止到目前,CocoStudio版本已经发展到1.5,各个子工具间也已经发生了巨大变化.但是,无论是动画编辑器,UI编辑器,场景编辑器还是 数据编辑器,它们生成(导出)的文件在商业开发中往往需要进行 ...

  4. RSA客户端js加密服务器C#解密(含源码)

    本来用https感觉已经差不多了,客户非得要用户登录的时候再加密一次, 因为时间关系,原计划用C++做客户端Activex加密暂被取消,花了两天时间在网上到处找,先作出了一个js的客户端加密先用着 思 ...

  5. Quick 3.3 的代码资源加密

    http://cn.cocos2d-x.org/tutorial/show?id=1507 http://cn.cocos2d-x.org/tutorial/show?id=1447 http://b ...

  6. HHDBCS及HHDESK的资源加密功能

    安全性,是头等重要的事情.HHDBCS及HHDESK均有一项实用功能,资源加密. HHDBCS 打开HHDBCS,出现连接管理界面(或者在运行过程中,点击连接管理),点击如下图箭头所指处的图标即可 H ...

  7. 溢信IP guard文档加密系统控制台看着正常客户端无加密图标问题解决

    目录 一.问题描述 二.解决办法 三.操作步骤 一.问题描述 控制台能看到客户端在线,也能想客户端发送消息通知,看似正常.客户端也能查看加密文档,但是,客户端无加密图标,也无法申请文档解密.外发(点击 ...

  8. 实现Android APK加固:代码加密隐藏、资源加密隐藏、so库加密隐藏。兼容unity引擎。附加固工具链接。

    1.为什么做加固 因为不想辛辛苦苦做的东西,被别人拿去改成各种版,半路摘我的桃子. 所以需要将原包的一些核心东西进行加密影藏. 市面上比较好的解决方案就是进行加固,能提升apk安全性. 2.怎么加固 ...

  9. pandorabox mysql_GitHub - gy-games/pandorabox: 基于非对称加密(RSA)的私密信息传递工具,数据由本地客户端进行加密、解密操作。...

    PandoraBox | 私密信息传递工具 基于非对称加密(RSA)的私密信息传递工具,数据由本地客户端进行加密.解密操作,密文通过网络进行传输,确保信息的安全性! -- Browse Website ...

最新文章

  1. YOLO算法史上最全综述:从YOLOv1到YOLOv5
  2. python读取文件模式_python如何读取文件的数据
  3. 【Python入门】Python 63个内置函数超级详解
  4. 前端学习(2714):重读vue电商网站34之侧边栏路由改造
  5. 阿里云96页报告详解《云上转型》(10个案例、10大趋势/完整版PPT)
  6. 正则规则大全 JAVA
  7. 视频rtmp协议简介
  8. String(+) vs StringBuffer(append)
  9. 【软件项目管理】软件项目的主要成本是人的劳动的消耗
  10. c#先进行uri解码_JavaScript、C# URL编码、解码总结
  11. ModBus RTU协议CRC校验方式最简实现
  12. Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码
  13. 关于HP C7K的firmware management中的power policy理解
  14. MDK5:正点原子stm32遇Target not created的解决方法
  15. 2022年最新河南建筑安全员模拟题库及答案
  16. 一文带你全方位入门docker
  17. OpenCvSharp工作学习笔记5-图片缩放
  18. sql和mysql的区别
  19. 什么叫ocpm、ocpc、ocpa?三种转化出价方式
  20. 郑州三级分销系统小程序开发层级划分

热门文章

  1. 微信小程序使用canvas绘图并下载
  2. Mac下代理不生效的问题
  3. python sklearn svm 模型训练后的参数说明
  4. OpenVP* 设置账号密码登陆
  5. csv短信回复到android,如何在Android手机上恢复已删除的短信?
  6. px4+vins+ego单机鲁棒飞行四(PX4飞控日志分析篇)
  7. Python:绘制黑色花
  8. Android热缓解策略
  9. 计算机窗口闪屏,热点:电脑显示器闪屏(电脑屏幕闪烁的解决方法)
  10. 第九回 随机数千般可能难预料,break一言不合就退群