我总是想写点东西来得到大家的认可,因为我都想把我自己在开发过程中遇到的一些麻烦,花了一些时间然后解决的东西分享给大家,让需要的同学可以少走弯路!也是刚开始我的博客人生,总是想这样做应该有意义的,可以帮到大家!
废话不多说吧,相信有很多人用到了cocos的lua引擎,这个东西不错,有很多用处,甚至你可以用它来存储数据,作为配置文件!至于lua的用处,我就不多说了!现在我想讨论的是,如果你用了lua,你总是希望它是被加密的,也许里面的数据总是不想让别人看到的!我的项目也是,所以我就需要对lua文件进行加解密!lua加密的话跟普通文件加密一样的,你可以使用AES加密,这是一个比较普遍的加密解密算法,是一个开源的,比较不错,大家有兴趣可以网上搜索看一看!在cocos2d-x里面,有对lua的使用做了test,大家不会的也可以去看!
首先,我们要用lua引擎的读取内存的方法,这样,我们才可以把你的lua文件解密出来,传给lua方法!来看看这个代码
- cocos2d::CCString* pstrFileContent = cocos2d::CCString::createWithContentsOfFile("E:\1-1.lua");
- pEngine->executeString(pstrFileContent->getCString());
- cocos2d::CCString* pstrFileContent = luaDecode(fullPath .c_str(),LUADECODEKEY); //lua 解密
- pEngine->executeString(pstrFileContent->getCString());
再来看看我那个解密函数
- cocos2d::CCString* luaDecode(const char *pszFileName,int key)
- {
- unsigned long size = 0;
- unsigned char* pData = 0;
- CCString* pRet = NULL;
- pData = CCFileUtils::sharedFileUtils()->getFileData(pszFileName, "rb", &size);
- for(int i=0;i<size;i++ )
- {
- pData[i] = (char)(pData[i]^key);
- }
- pRet = CCString::createWithData(pData, size);
- CC_SAFE_DELETE_ARRAY(pData);
- return pRet;
- }
- 当然,这是一个非常简单的加密解密方法(异或)!就这样,你的lua问价就解密了!
- <span style="white-space:pre"> </span>对于lua的加密,自己可以做一个小工具,这个小工具的思路跟大家分享一下,先把要加密的文件读取了,然后加密再存到另一个文件夹就OK了!这个应该大家都都懂,但是有些人可能还是有点不知所措,在这里点一下应该不清楚的也清楚了!!!
- <span style="white-space:pre"> </span>今天的分享就先到这里了,只是个人见解,对你有用当然好,如果对你没用,也许对你还是有点启发吧,呵呵