quick-cocos2d-x图片资源加密 (转)

本文介绍了如何在Quick-Cocos2d-x中使用XXTEA加密图片资源,包括编写加密脚本、修改平台代码以支持解密加载,并提供了Windows和MAC下的加密方法。详细讲解了加密过程以及AppDelegate和CCFileUtils的相关修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

quick-x已经支持用XXTEA加密方式对脚本文件进行加密。在此基础上,自己做了一些工作,对图片资源进行了XXTEA加密,现分享给大家。

首先我们要有对图片加密的工具。这个参考compile_scripts脚本,写一个用于加密的脚本就可以了。我自己写的脚本放在这里,大家可以下载使用。(之前没用过php,完全是照着廖大的脚本修改成的,有写得不好的地方还请多多包涵,呵呵)

脚本使用的方法和compile_scripts脚本差不多,将zip包里的文件解压到quick-x的bin目录下就可以用了。

在Windows命令行下,输入以下指令(请确认环境变量PATH里有quick-x的bin目录,否则需要自己加运行路径)

1 pack_files.bat -i olddir -o newdir -ek XXTEA -es tsts

以上指令是将olddir目录下的所有文件用XXTEA加密后,放到newdir目录下,其中加密密匙为XXTEA,加密记号为tsts。参数的定义与compile_scripts脚本类似,用-h也可以得到帮助,也不多说了。

MAC下可以用pack_files.sh来加密。

需要注意的是,现在只支持图片的加密。比如AllSprites.plist和AllSprites.png这样的一对纹理文件,只能加密png文件,plist文件加密后是用不了的。(注:现在已经支持plist文件,请看“后篇”里的内容)

文件加密好以后,我们需要修改quick-x的平台代码,使得它能够读取加密后的文件。

载入图片的函数是lib\cocos2d-x\cocos2dx\platform\CCImageCommon_cpp.h里面的CCImage::initWithImageFile()和CCImage::initWithImageFileThreadSafe()。再进一步看,这两个函数里都是使用CCFileUtils::sharedFileUtils()->getFileData()来获得文件数据的,我们只需要在获取数据时把文件数据解密即可。

为此我们需要专门写一个新的getFileData()来代替调用。直接写一个是可以的,放在哪个文件里也不重要。因为我自己有一个HelperFunc模块,专门放自己增加的功能的,所以我就写在这里面了。文件里的相关代码如下:

HelperFunc.h

01 #ifndef Cocos2Dx_HelperFunc_h
02 #define Cocos2Dx_HelperFunc_h
03  
04 NS_CC_BEGIN
05  
06 class CZHelperFunc
07 {
08 public:
09     static unsigned char* getFileData(const char* pszFileName, const char* pszMode, unsignedlong * pSize);
10  
11 };
12  
13 NS_CC_END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值