跳转到主要内容
这些函数使用 AES (高级加密标准) 算法对数据进行加密和解密。 密钥长度取决于加密模式:-128--196--256- 模式分别对应 162432 字节。 初始化向量的长度始终为 16 字节 (超过 16 字节的部分将被忽略) 。

HMAC

引入版本:v25.12.0 使用指定的哈希算法和密钥,为给定消息计算 HMAC (基于哈希的消息认证码) 。 支持的哈希算法:
  • blake2b512
  • blake2s256
  • md4
  • md5
  • md5-sha1
  • mdc2
  • ripemd (别名:RIPEMD160、ripemd)
  • ripemd160
  • rmd160 (别名:RIPEMD160、rmd160)
  • sha1
  • sha224
  • sha256
  • sha3-224
  • sha3-256
  • sha3-384
  • sha3-512
  • sha384
  • sha512
  • sha512-224
  • sha512-256
  • shake128
  • shake256
  • sm3
  • ssl3-md5 (别名:MD5、ssl3-md5)
  • ssl3-sha1 (别名:SHA1、ssl3-sha1)
  • whirlpool
语法
参数
  • mode — 哈希算法名称 (不区分大小写) 。支持:md5、sha1、sha224、sha256、sha384、sha512。String
  • message — 待认证的消息。String
  • key — 用于 HMAC 的密钥。String
返回值 返回包含 HMAC 摘要的二进制字符串。String 示例 基本 HMAC-SHA256
Query
Response
不同的哈希算法
Query
Response
不区分大小写模式
Query
Response

aes_decrypt_mysql

版本引入:v20.12.0 用于解密由 MySQL 的 AES_ENCRYPT 函数加密的数据。 对于相同的输入,它生成的明文与 decrypt 相同。 当 keyiv 的长度超过正常应有的长度时,aes_decrypt_mysql 会与 MySQL 的 aes_decrypt 保持一致:对 key 进行“折叠”,并忽略 IV 中多出的位。 支持以下解密模式:
  • aes-128-ecb, aes-192-ecb, aes-256-ecb
  • aes-128-cbc, aes-192-cbc, aes-256-cbc
  • aes-128-cfb128
  • aes-128-ofb, aes-192-ofb, aes-256-ofb
语法
参数
  • mode — 解密模式。String
  • ciphertext — 需要解密的密文。String
  • key — 解密密钥。String
  • iv — 可选。初始化向量。String
返回值 返回解密后的 String。String 示例 解密 MySQL 数据
Query
Response

aes_encrypt_mysql

引入版本:v20.12.0 以与 MySQL 的 AES_ENCRYPT 函数相同的方式加密文本。 生成的密文可使用 MySQL 的 AES_DECRYPT 函数解密。 对于相同的输入,它生成的密文与 encrypt 函数相同。 当 keyiv 的长度超过其通常应有的长度时,aes_encrypt_mysql 会遵循 MySQL 的 aes_encrypt 行为:对 key 进行“折叠”,并忽略 iv 中多余的位。 支持的加密模式有:
  • aes-128-ecb, aes-192-ecb, aes-256-ecb
  • aes-128-cbc, aes-192-cbc, aes-256-cbc
  • aes-128-ofb, aes-192-ofb, aes-256-ofb
语法
参数
  • mode — 加密模式。String
  • plaintext — 要加密的明文。String
  • key — 加密密钥。如果密钥长度超过 mode 要求的长度,则会执行 MySQL 特有的密钥折叠。String
  • iv — 可选。初始化向量。只有前 16 个字节会被使用。String
返回值 密文二进制字符串。String 示例 相同输入的比较
Query
Response
长密钥会导致加密失败
Query
Response
MySQL 兼容性
Query
Response
更长的 IV 也会得到相同的结果
Query
Response

decrypt

引入版本:v20.12.0 此函数使用以下模式对经 AES 加密的二进制字符串进行解密:
  • aes-128-ecb, aes-192-ecb, aes-256-ecb
  • aes-128-cbc, aes-192-cbc, aes-256-cbc
  • aes-128-ofb, aes-192-ofb, aes-256-ofb
  • aes-128-gcm, aes-192-gcm, aes-256-gcm
  • aes-128-ctr, aes-192-ctr, aes-256-ctr
  • aes-128-cfb, aes-128-cfb1, aes-128-cfb8
语法
参数
  • mode — 解密模式。String
  • ciphertext — 待解密的密文。String
  • key — 解密密钥。String
  • iv — 初始化向量。在 -gcm 模式下为必填项,其他模式下可选。String
  • aad — 附加认证数据。若此值不正确,则无法解密。仅适用于 -gcm 模式;用于其他模式时会抛出异常。String
返回值 返回解密后的明文。String 示例 正确解密已加密的数据
Query
Response
错误解密已加密数据
Query
Response

encrypt

引入版本:v20.12.0 使用以下任一 AES 模式将明文加密为密文:
  • aes-128-ecb, aes-192-ecb, aes-256-ecb
  • aes-128-cbc, aes-192-cbc, aes-256-cbc
  • aes-128-ofb, aes-192-ofb, aes-256-ofb
  • aes-128-gcm, aes-192-gcm, aes-256-gcm
  • aes-128-ctr, aes-192-ctr, aes-256-ctr
  • aes-128-cfb, aes-128-cfb1, aes-128-cfb8
语法
参数
  • mode — 加密模式。String
  • plaintext — 要加密的文本。String
  • key — 加密密钥。String
  • iv — 初始化向量。在 -gcm 模式下为必填项,其他模式下可选。String
  • aad — 附加认证数据。它不会被加密,但会影响解密结果。仅在 -gcm 模式下有效;在其他模式下会抛出异常。String
返回值 返回二进制字符串形式的密文。String 示例 加密示例
Query
Response
GCM 模式示例
Query
Response

tryDecrypt

引入版本:v22.10.0 decrypt 函数类似,但在使用错误的密钥导致解密失败时,会返回 NULL 语法
参数
  • mode — 解密模式。String
  • ciphertext — 需要解密的密文。String
  • key — 解密密钥。String
  • iv — 可选。初始化向量。-gcm 模式下必需,其他模式下可选。String
  • aad — 可选。附加认证数据。如果该值不正确,则无法解密。仅适用于 -gcm 模式;用于其他模式时会抛出异常。String
返回值 返回解密后的 String;如果解密失败,则返回 NULLNullable(String) 示例 创建表并插入数据
Query
Response
最后修改于 2026年6月10日