LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用,支持在线调试运行,支持离线运行。TOOL的LUA教程争取做到大家可以无痛调用各种功能函数,不需要学习成本。
H7-TOOL的LUA API手册发布V1.1,方便API检索查阅
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=122382

现在TOOL端,各种加密解密算法都可以注册实现,根据客户的应用需求逐步增加。
应用场景
1、可以用来做固件加密
2、可以做关键数据加密
概念
AES-ECB 的全称是 AES + Electronic Codebook(电子密码本模式),它是 AES 加密中最简单的分组加密模式。
1、明文按 16 字节(128-bit,即 AES 的块大小)切分成多个块
2、长度不足 16 字节倍数的最后一个块,用 PKCS7 方式填充
3、每个块独立地用同一个 AES 密钥加密
4、所有加密后的块按顺序拼接,得到密文
LUA函数说明:
1、AES ECB加密
re, encryptdata = cmox_aes_ecb_encrypt(data, #data, key, #key)
返回值re,re = 1表示成功, re = 0表示失败
返回值encryptdata,返回加密数据串、类似\x11\x22\x33这种的转义字符串方式
第1个参数data,要加密的数据字符串, 每次最大4K字节
第2个参数#data,表示字符串长度
第3个参数key,表示密钥
第4个参数#key,表示密钥长度,支持128bit,16字节;192bit,24字节;256bit,32字节
2、AES ECB解密
re, decryptdata = cmox_aes_ecb_decrypt(encryptdata, #encryptdata, key, #key)
返回值re,re = 1表示成功, re = 0表示失败
返回值encryptdata,返回解密后原始数据串、类似\x11\x22\x33这种的转义字符串方式
第1个参数encryptdata,要解密的数据字符串,每次最大4K字节
第2个参数#data,表示字符串长度
第3个参数key,表示密钥
第4个参数#key,表示密钥长度,支持128bit,16字节;192bit,24字节;256bit,32字节
测试举例:
[Lua] 纯文本查看 复制代码
local key = "0123456789abcdef" -- 16字节
local data = "0123456789abcdef" -- 恰好16字节(无填充)
local re1, encryptdata = cmox_aes_ecb_encrypt(data, #data, key, #key)
local re2, decryptdata = cmox_aes_ecb_decrypt(encryptdata, #encryptdata, key, #key)
print("密钥: " .. key)
print("明文: " .. data)
if(re1 == 1) then
print("密文(hex): ")
for i = 1, #encryptdata do
io.write(string.format("%02X ", encryptdata:byte(i)))
if i % 16 == 0 then print() end
end
else
print("加密失败")
end
if(re2 == 1) then
print("解密还原: " .. decryptdata)
else
print("解密还原失败")
end
print("加解密一致: " .. tostring(pt == pt2))
|