跳转到内容

加密与签名

加密操作,包括加密、HMAC、JWT 和密钥派生。适配工作流使用。

local crypto = require("crypto")
local bytes, err = crypto.random.bytes(32)
参数类型描述
lengthinteger字节数(1 到 1,048,576)

返回值: string, error

local str, err = crypto.random.string(32)
local str, err = crypto.random.string(32, "0123456789abcdef")
参数类型描述
lengthinteger字符串长度(1 到 1,048,576)
charsetstring?使用的字符集(默认:字母数字)

返回值: string, error

local id, err = crypto.random.uuid()

返回值: string, error

local hex, err = crypto.hmac.sha256(key, data)
参数类型描述
keystringHMAC 密钥
datastring要认证的数据

返回值: string, error

local hex, err = crypto.hmac.sha512(key, data)
参数类型描述
keystringHMAC 密钥
datastring要认证的数据

返回值: string, error

local encrypted, err = crypto.encrypt.aes(data, key)
local encrypted, err = crypto.encrypt.aes(data, key, aad)
参数类型描述
datastring要加密的明文
keystring16、24 或 32 字节(AES-128/192/256)
aadstring?附加认证数据

返回值: string, error(nonce 前置)

ChaCha20-Poly1305 {id=“encrypt-chacha20”}

Section titled “ChaCha20-Poly1305 {id=“encrypt-chacha20”}”
local encrypted, err = crypto.encrypt.chacha20(data, key)
local encrypted, err = crypto.encrypt.chacha20(data, key, aad)
参数类型描述
datastring要加密的明文
keystring必须为 32 字节
aadstring?附加认证数据

返回值: string, error

local plaintext, err = crypto.decrypt.aes(encrypted, key)
local plaintext, err = crypto.decrypt.aes(encrypted, key, aad)
参数类型描述
datastring来自 encrypt.aes 的加密数据
keystring加密时使用的相同密钥
aadstring?必须与加密时使用的 AAD 匹配

返回值: string, error

ChaCha20-Poly1305 {id=“decrypt-chacha20”}

Section titled “ChaCha20-Poly1305 {id=“decrypt-chacha20”}”
local plaintext, err = crypto.decrypt.chacha20(encrypted, key)
local plaintext, err = crypto.decrypt.chacha20(encrypted, key, aad)
参数类型描述
datastring来自 encrypt.chacha20 的加密数据
keystring加密时使用的相同密钥
aadstring?必须与加密时使用的 AAD 匹配

返回值: string, error

local token, err = crypto.jwt.encode(payload, secret)
local token, err = crypto.jwt.encode(payload, secret, "HS256")
local token, err = crypto.jwt.encode(payload, private_key_pem, "RS256")
参数类型描述
payloadtableJWT 声明(_header 用于自定义头)
keystring密钥(HMAC)或 PEM 私钥(RSA)
algstring?HS256、HS384、HS512、RS256(默认:HS256)

返回值: string, error

local claims, err = crypto.jwt.verify(token, secret)
local claims, err = crypto.jwt.verify(token, secret, "HS256", false)
local claims, err = crypto.jwt.verify(token, public_key_pem, "RS256")
参数类型描述
tokenstring要验证的 JWT 令牌
keystring密钥(HMAC)或 PEM 公钥(RSA)
algstring?预期算法(默认:HS256)
require_expboolean?验证过期时间(默认:true)

返回值: table, error

local key, err = crypto.pbkdf2(password, salt, iterations, key_length)
local key, err = crypto.pbkdf2(password, salt, iterations, key_length, "sha512")
参数类型描述
passwordstring密码/口令
saltstring盐值
iterationsinteger迭代次数(最大 10,000,000)
key_lengthinteger所需密钥长度(字节)
hashstring?sha256 或 sha512(默认:sha256)

返回值: string, error

local equal = crypto.constant_time_compare(a, b)
参数类型描述
astring第一个字符串
bstring第二个字符串

返回值: boolean

条件类型可重试
无效的长度errors.INVALID
空密钥errors.INVALID
无效的密钥大小errors.INVALID
解密失败errors.INTERNAL
令牌已过期errors.INTERNAL

参见 错误处理 了解如何处理错误。