Skip to content

加解密方法

函数列表

1. AES 加密/解密 (cryptLib.aes_crypt)

说明: 对数据执行 AES 加密或解密操作,支持多种模式(ECB/CBC/CFB/OFB/CTR)和可选填充

函数: cryptLib.aes_crypt(data, key, operation, mode, [iv], [padding])

参数:

参数名类型说明
data字符串要加密或解密的原始数据
key字符串加密密钥(16/24/32 字节,对应 AES-128/192/256)
operation字符串操作类型,"encrypt""decrypt"
mode字符串加密模式:"ecb", "cbc", "cfb", "ofb", "ctr"
iv字符串初始化向量(16 字节),ECB 模式不需要
padding布尔值是否启用 PKCS#7 填充,默认为 true

返回值:

返回值类型说明
字符串加密或解密后的数据

使用说明: ECB 模式不需要 iv 参数;密钥长度必须为 16/24/32 字节;当模式不是 ECB 时,iv 长度必须为 16 字节

示例:

lua
local data = "Hello LazyScript!"
local key = "1234567890123456"
local iv = "0000000000000000"

local encrypted = cryptLib.aes_crypt(data, key, "encrypt", "cbc", iv, true)
print("加密结果:", encrypted)

local decrypted = cryptLib.aes_crypt(encrypted, key, "decrypt", "cbc", iv, true)
print("解密结果:", decrypted)

2. 生成 AES 密钥 (cryptLib.aes_keygen)

说明: 随机生成指定长度的 AES 密钥(16/24/32)

函数: cryptLib.aes_keygen(key_length)

参数:

参数名类型说明
key_length整数密钥长度(16/24/32)

返回值:

返回值类型说明
字符串随机生成的密钥

示例:

lua
local key = cryptLib.aes_keygen(32)
print("生成的密钥:", key)

3. 生成随机 IV (cryptLib.aes_ivgen)

说明: 生成一个 16 字节的随机初始化向量 (IV),用于 CBC/CFB/OFB 等模式

函数: cryptLib.aes_ivgen()

参数: 无

返回值:

返回值类型说明
字符串16 字节随机 IV

示例:

lua
local iv = cryptLib.aes_ivgen()
print("生成的IV:", iv)

4. 生成 RSA 密钥对 (cryptLib.rsa_generate_key)

说明: 生成 RSA 公钥/私钥对,返回 PEM 格式的公钥和私钥

函数: cryptLib.rsa_generate_key([key_bits])

参数:

参数名类型说明
key_bits整数密钥长度,默认 2048(常见 1024/2048/4096)

返回值:

返回值类型说明
字符串PEM 格式的公钥
字符串PEM 格式的私钥

使用说明: 密钥长度越长越安全,但性能越低;一般建议至少使用 2048 位

示例:

lua
local pubkey, privkey = cryptLib.rsa_generate_key(2048)
print("公钥:\n", pubkey)
print("私钥:\n", privkey)

5. RSA 加密(或签名) (cryptLib.rsa_encrypt)

说明: 使用 RSA 公钥(或私钥)对数据进行加密;当使用私钥加密时可用于签名场景

函数: cryptLib.rsa_encrypt(data, key, is_public_key)

参数:

参数名类型说明
data字符串要加密的数据
key字符串公钥或私钥(PEM 格式)
is_public_key布尔值true 表示使用公钥加密,false 表示使用私钥加密

返回值:

返回值类型说明
字符串加密后的数据(原始字节)

使用说明: RSA 加密的数据长度受限(通常不能超过密钥长度减填充开销,例如 PKCS#1 填充为 key_len-11),大数据推荐使用混合加密(对称加密数据,RSA 加密对称密钥)

示例:

lua
local original_data = "需要加密的敏感数据"
local encrypted_data = cryptLib.rsa_encrypt(original_data, pubkey, true)
print("加密后长度:", #encrypted_data)

local decrypted = cryptLib.rsa_decrypt(encrypted_data, privkey, false)
print("解密结果:", decrypted)

6. RSA 解密(或验证签名) (cryptLib.rsa_decrypt)

说明: 使用 RSA 私钥(或公钥)对数据进行解密;当使用公钥解密私钥"加密"的数据时可用于验证签名

函数: cryptLib.rsa_decrypt(data, key, is_public_key)

参数:

参数名类型说明
data字符串要解密的数据
key字符串私钥或公钥(PEM 格式)
is_public_key布尔值true 表示使用公钥解密,false 表示使用私钥解密

返回值:

返回值类型说明
字符串解密后的原始数据

示例:

lua
local decrypted = cryptLib.rsa_decrypt(encrypted_data, privkey, false)
print("解密结果:", decrypted)