当前位置: 首页 > Web前端 > HTML

资源加密使用文档

时间:2023-03-27 23:30:56 HTML

原理文章:https://www.mdnice.com/writing...加密:1.构建项目2.安装python3环境,nodejs环境pyton3:https://www.python.org/getit/nodejs:http://www.nodejs.com.cn/安装完成后,运行tools/init.bat3.将根目录下的tools目录复制到自己的项目中,双击运行中的encrypt.bat脚本directory运行python脚本,bat脚本中的入参为构建项目中的资源所在目录,可以针对不同的构建项目创建bat脚本。Mac用户还没有写过sh脚本,以后会补上,暂时可以运行python命令:python3encrypt.py\\build\\android\\assets3。对于web/微信小游戏等没有生成步骤的项目,至此加密输出包已经完成,可以测试了。对于android/华为小游戏/小米小游戏/ios等需要生成rpk/apk/ipa的平台,继续生成包体,生成后测试。解密网页/小游戏将根目录下assets/plugin目录下的decrypt_plugin.js文件复制到自己的项目中,作为插件导入。为了更高的安全性,可以将文件名修改为其他无意义的名字。native(Android/ios等)1.找到如下文件:engine目录\native\cocos\platform\FileUtils.cpp例如:C:\CocosDashboard_1.1.1\resources.editors\Creator\3.5.2\resources\resources\3d\engine-native\cocos\platform\FileUtils.cpp(默认安装引擎示例)或:E:\cocosEngine\engine\native\cocos\platform\FileUtils.cpp(自定义引擎目录示例)搜索getStringFromFile()和getDataFromFile()方法用以下代码覆盖getStringFromFile()和getDataFromFile()方法,然后是conststd::stringFILE_ENCRPT_SIGN="testsign";//文件签名,标记被加密,需要和decrypt_plugin.js中的key一致conststd::stringFILE_ENCRPT_KEY="vXj0TTiFuUXFiLGI";//加密key需要和decrypt_plugin.jsstd::一致字符串FileUtils::getStringFromFile(conststd::string&filename){std::strings;getContents(文件名,&s);if(s.length()>FILE_ENCRPT_SIGN.size()&&s.find(FILE_ENCRPT_SIGN)==0){s.erase(0,FILE_ENCRPT_SIGN.size());int键索引=0;for(inti=0;i=FILE_ENCRPT_KEY.size()){keyI指数=0;}s[i]^=FILE_ENCRPT_KEY[keyIndex];键索引++;}}returns;}DataFileUtils::getDataFromFile(conststd::string&filename){数据d;getContents(文件名,&d);unsignedchar*bytes=d.getBytes();if(memcmp(bytes,FILE_ENCRPT_SIGN.c_str(),FILE_ENCRPT_SIGN.size())==0){ssize_tnoSignsize=d.getSize()-FILE_ENCRPT_SIGN.size();unsignedchar*data=(unsignedchar*)calloc(1,noSignsize);memcpy(data,bytes+FILE_ENCRPT_SIGN.size(),noSignsize);int键索引=0;对于(inti=0;i=FILE_ENCRPT_KEY.size()){keyIndex=0;}data[i]^=FILE_ENCRPT_KEY[keyIndex];键索引++;}d.fastSet(数据,noSignsize);}返回d;}注意!decrypt_plugin.js、FileUtils.cpp、encrypt.py中需要保持key的一致性本文由mdnice多平台发布