Lua代码加密

Lua代码加密

NOV 22ND, 2013 | COMMENTS

开发者为了防止代码泄漏,在发布前一般会对脚本进行加密,加密方式有多种, 比如常见的AES, XXTEA .. 等等,在cocos2dx加载加密后的lua文件后,解密之后再 执行.


加密工具我用c写了一个,代码放在github上了:https://github.com/zhizhen/cocos2dx-lua-crypto.git  关键代码如下

FILE *file;
char* inPath = argv[1];     //源文件路径
char* outPath = argv[2];    //目标文件路径
unsigned char* fileData = malloc(FILE_LEN);

file = fopen(inPath, "rb");
unsigned long num = fread(fileData, 1, FILE_LEN, file);
fclose(file);

unsigned int dataLen = 0;
unsigned char* data = xxtea_encrypt(fileData, num, (unsigned char*)KEY, 32, &dataLen);

file = fopen(outPath, "web+");
fwrite(data, 1, dataLen, file);
fclose(file);

在sh代码中遍历文件夹,调用c生成的工具对单个文件进行加密

#!/bin/sh
EXDIR=`cd $(dirname $0); pwd`
cd "$EXDIR/$1"

#echo please input source dir:
#read FROMDIR
#echo please input output dir:
#read TODIR

FROMDIR="lua"
TODIR="out"

rm -rf $TODIR
cp -r $FROMDIR $TODIR

deepls(){
    for x in $1/*
    do
        y=`basename $x .lua`
        if [ -f $x ]
        then
            $EXDIR/debug/file_encrypto "$EXDIR/$1/$y.lua" "$EXDIR/$2/$y.so"
        fi
        if [ -d $x ]
        then
            deepls "$1/$y" "$2/$y"
        fi
    done
}

deepls $FROMDIR $TODIR

find $TODIR -name '*.lua' -exec rm {} \;

执行./build.sh 就能将lua文件夹中的lua脚本全部加密后放到out目录下,然后就剩下 怎么在cocos2dx里面修改代码读取加密后的脚本问题了

 Nov 22nd, 2013  cocos2dx

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个使用LuaSec库实现AES加密的示例代码: ```lua local aes = require("openssl.aes") -- 加密函数 function encrypt(key, data) -- 将key转换为128位的二进制数据 local key_bin = aes.digest("md5", key) -- 创建AES加密对象 local cipher = aes.new(key_bin, "CBC") -- 对数据进行PKCS7填充 data = cipher:pad(data, 16) -- 加密数据 local encrypted_data = cipher:encrypt(data) -- 返回加密后的数据 return encrypted_data end -- 解密函数 function decrypt(key, encrypted_data) -- 将key转换为128位的二进制数据 local key_bin = aes.digest("md5", key) -- 创建AES加密对象 local cipher = aes.new(key_bin, "CBC") -- 解密数据 local decrypted_data = cipher:decrypt(encrypted_data) -- 去除PKCS7填充 decrypted_data = cipher:unpad(decrypted_data) -- 返回解密后的数据 return decrypted_data end -- 测试代码 local key = "my_secret_key" local data = "Hello, world!" local encrypted_data = encrypt(key, data) print("加密后的数据:", encrypted_data) local decrypted_data = decrypt(key, encrypted_data) print("解密后的数据:", decrypted_data) ``` 这段代码使用了LuaSec库中的AES加密算法实现了加密和解密功能,其中encrypt函数用于加密数据,decrypt函数用于解密数据。加密过程中使用了CBC模式和PKCS7填充,解密过程中先解密数据,再去除PKCS7填充。在测试代码中,我们使用了一个字符串作为加密的数据,可以根据自己的需求修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值