zm.DecodeAES AES解密
🎯功能
对数据进行标准AES解密, 支持AES128,AES196和AES256, 能对通过zm.EncodeAES AES加密加密的结果进行解密还原。
📜语法
结果 = zm.DecodeAES(密文, 密钥[, 高级属性])
📥参数
参数 | 数据类型 | 解释 |
---|---|---|
明文 | 字符串 | 待解密的密文内容。 |
密钥 | 字符串 | 用于解密的密钥。 |
高级属性 | 表 | 可选参数,用于设置加解密模式等选项,格式为 {"属性名":"属性值",...} ,详见下方表。 |
属性名 | 可选值列表 | 默认值 | 作用 |
---|---|---|---|
mode | ecb ,cbc ,ctr ,ofb ,cfb ,ige ,pcbc | ecb | 密文加密模式 |
padding | zero ,pkcs7 ,isoiec7816 ,ansix923 | zero | 填充方式 |
block | 128 ,192 ,256 | 128 | 数据块 |
iv | 任意字符串 | 0 | iv偏移量,ecb模式不用填写,其他模式必填且要有16个字节长度。 |
cipherout | 0 ,2 ,16 ,64 | 16 | 密文类型,0 为原二进制字符串,2 为字节数组, 16 为十六进制字符串, 64 为原二进制字符串Base64编码 |
📤返回
字符串
,返回解密后的结果,失败为null
💡示例
Import "zm.luae" //导入插件,只需执行一次
zm.Init //初始化插件,只需执行一次
Dim text = "紫猫", pwd = "m.zimaoxy.com"
Dim s, v
s = zm.EncodeAES(text, pwd)
TracePrint "对明文", text, "使用密钥", pwd, "进行AES-ECB加密结果", s
v = zm.DecodeAES(s, pwd)
TracePrint "对密文", s, "使用密钥", pwd, "进行AES-ECB解密结果", v
s = zm.EncodeAES(text, pwd, {"cipherout":64})
TracePrint "对明文", text, "使用密钥", pwd, "进行AES加密输出Base64结果", s
v = zm.DecodeAES(s, pwd, {"cipherout":64})
TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行AES解密输出Base64结果", v
s = zm.EncodeAES(text, pwd, {"mode":"cbc","iv":"1234567890abcdef"})
TracePrint "对明文", text, "使用密钥", pwd, "进行AES-CBC加密结果", s
v = zm.DecodeAES(s, pwd, {"mode":"cbc","iv":"1234567890abcdef"})
TracePrint "对十六进制密文", s, "使用密钥", pwd, "进行AES-CBC解密结果", v
📘备注
- V1.1723b: 初次加入
- V2.1828:
- 彻底解决加解密出错失败的问题
- 改为使用封装 https://github.com/somesocks/lua-lockbox 的代码, 不兼容旧版加解密结果!
- V3.1831:
- 修改为标准AES加解密, 注意不兼容上版本的加解密结果!
- 对密钥长度加入限制
- 修复解密结果包含
\0
字符的问题