AES_ENCRYPT()
AES_ENCRYPT(str, key_str[, init_vector])使用 AES 加密字符串并返回BLOB密文;加密模式由会话变量block_encryption_mode选择(默认aes-128-ecb;aes-256-cbc需要在第三个参数中提供 16 字节 IV)。
函数说明
AES_ENCRYPT() 使用 AES 以 key_str 加密 str 并返回 BLOB 密文。加
密模式由会话变量 block_encryption_mode
选择。
MatrixOne 目前支持两种模式:
aes-128-ecb(默认)。密钥派生为 16 字节;忽略可选的init_vector参数。aes-256-cbc。密钥派生为 32 字节;init_vector参数为必填,且长度至 少 16 字节。
以下情况下函数返回 NULL:
str或key_str为NULL。block_encryption_mode设置为不支持的值。- 选择了 CBC 模式但 IV 缺失、为
NULL或长度不足 16 字节。 - 密钥派生或底层 AES 操作失败。
函数语法
> AES_ENCRYPT(str, key_str)
> AES_ENCRYPT(str, key_str, init_vector)
参数释义
| 参数 | 说明 |
|---|---|
| str | 必填。要加密的明文字符串。接受 VARCHAR、CHAR、TEXT 或 BLOB。 |
| key_str | 必填。加密密钥。 |
| init_vector | 可选。初始化向量,当 block_encryption_mode 选择 CBC 模式时为必填。长度至少 16 字节。 |
示例
mysql> SET block_encryption_mode = 'aes-128-ecb';
mysql> SELECT HEX(AES_ENCRYPT('MatrixOne', 'my-secret-key'));
+-------------------------------------------------+
| hex(aes_encrypt(matrixone, my-secret-key)) |
+-------------------------------------------------+
| 3B1A... |
+-------------------------------------------------+
mysql> SET block_encryption_mode = 'aes-256-cbc';
mysql> SELECT HEX(AES_ENCRYPT('MatrixOne', 'my-secret-key', '0123456789abcdef'));