lua加密与require问题

lua的加密方式有不少,其中以luac和string.dump为例,首先到官网下载lua源码包,http://www.lua.org/ftp/,建议不要选最新的几个,他有个etc文件夹是没有了的,看了一下没看到整合到哪里去了,暂时不管因为和目的无关。

下载好了之后打开一个vs命令行工具

其中x86是32位的,x86_64是64位的,一般选64,在命令行中使用cd 进入lua目录(刚才解压后的目录),然后输入 "etc\luavs.bat" 回车

会编译生成一个文件在src目录下,有个luac.exe文件,可设置为环境变量,略

cmd,如果没设置环境变量则cd到目录下,键入 luac -o 生成luac文件后目录 需要的lua文件目录

确认无误回车,不报错这显示空一行,文件生成是不是很简单呢?可能会有一个问题是运行会报错,说是未编译,可以尝试改用32编译.

无意中博猪还看到string.dump()这个函数,用例见下


local p=loadfile("close2.lua")           --这是需要被加密的文件

local f=io.open("text.lc","wb")           --新建一个文件
f:write(string.dump(p))             --把需要加密的文件用string.dump处理,生成的文件就是二进制文件啦
f:close()

另外,要读取运行这个二进制文件也是很简单的

 local ff =loadfile("text.lc","b") --加载文件

ff =io.open("text.lc","r")     
local jk=ff:read("*a")
ff:close()

local thefunc=loadstring("jk")        --这里要注意的是有些版本似乎loadstring被取消了,旧版本的lua里才有,可以

改用load
thefunc()  --运行加密文件

编译好了的确可以运行,但是我想了一下,用另一个.lua文件来ruquire这个luac文件,发现会报错,也就是无法require加密文件,后面各种改也没办法,不知道是真的不行还是我没找对方法,有方法的希望留言,感谢。

 

好的,以下是一个使用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填充。在测试代码中,我们使用了一个字符串作为加密的数据,可以根据自己的需求修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值