コンテンツにスキップ

暗号化 & 署名

暗号化、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暗号化する平文
keystring32バイトである必要あり
aadstring?追加の認証データ

戻り値: string, error

local plaintext, err = crypto.decrypt.aes(encrypted, key)
local plaintext, err = crypto.decrypt.aes(encrypted, key, aad)
パラメータ説明
datastringencrypt.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)
パラメータ説明
datastringencrypt.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最初の文字列
bstring2番目の文字列

戻り値: boolean

条件種別再試行可能
無効な長さerrors.INVALIDno
空のキーerrors.INVALIDno
無効なキーサイズerrors.INVALIDno
復号失敗errors.INTERNALno
トークン期限切れerrors.INTERNALno

エラーの処理についてはエラー処理を参照。