AES_DECRYPT()¶
AES_DECRYPT(crypt_str, key_str[, init_vector])使用 AES 解密密文并返回VARCHAR明文;加密模式由会话变量block_encryption_mode选择,必须 与加密时使用的模式一致(默认aes-128-ecb;aes-256-cbc需要 16 字节 IV)。
函数说明¶
AES_DECRYPT() 使用 AES 以 key_str 解密 crypt_str 并返回 VARCHAR
明文。加密模式由会话变量 block_encryption_mode
选择,必须与生成 crypt_str 时使用的模式一致。
MatrixOne 目前支持两种模式:
aes-128-ecb(默认)。密钥派生为 16 字节;忽略可选的init_vector参数。aes-256-cbc。密钥派生为 32 字节;init_vector参数为必填,且长度至 少 16 字节,必须与加密时使用的 IV 一致。
以下情况下函数返回 NULL:
crypt_str或key_str为NULL。block_encryption_mode设置为不支持的值。选择了 CBC 模式但 IV 缺失、为
NULL或长度不足 16 字节。密钥派生或底层 AES 操作失败(密钥错误、密文被篡改或填充错误)。
函数语法¶
> AES_DECRYPT(crypt_str, key_str)
> AES_DECRYPT(crypt_str, key_str, init_vector)
参数释义¶
参数 |
说明 |
|---|---|
crypt_str |
必填。要解密的密文。接受 |
key_str |
必填。生成 |
init_vector |
可选。初始化向量,当 |
示例¶
mysql> SET block_encryption_mode = 'aes-128-ecb';
mysql> SELECT AES_DECRYPT(AES_ENCRYPT('MatrixOne', 'my-secret-key'), 'my-secret-key');
+--------------------------------------------------------------------------+
| aes_decrypt(aes_encrypt(matrixone, my-secret-key), my-secret-key) |
+--------------------------------------------------------------------------+
| MatrixOne |
+--------------------------------------------------------------------------+