---
title: "ENHANCED_AES_ENCRYPT - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: "ENHANCED_AES_ENCRYPT 声明 ENHANCED_AES_ENCRYPT(plaintext[, iv]) 说明 该函数主要用于列加密功能，该功能的开启通过 tde_method 参数进行控制，详情参见 tde_method 。 该函数需要的权限为 ENCRYPT 。 plaintext 为要进行 A…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# ENHANCED_AES_ENCRYPT

更新时间：2026-04-30 18:31:43

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/400.functions-of-mysql-mode/500.encryption-and-compression-functions-of-mysql-mode/820.enhanced-aes-encrypt-of-mysql-mode.md)  

## 声明

```sql
ENHANCED_AES_ENCRYPT(plaintext[, iv])

```

## 说明

- 该函数主要用于列加密功能，该功能的开启通过 `tde_method` 参数进行控制，详情参见 [tde_method](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685459)。
 - 该函数需要的权限为 `ENCRYPT`。
 - `plaintext` 为要进行 AES 加密的明文。
 - `[, iv]` 为可选参数，表示初始化向量。
 - 该函数使用的密钥为租户当前的主密钥。加密算法默认为 AES-128-ECB，可以通过设置系统变量 [block_encryption_mode](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685180) 的值来更改加密算法，仅支持 AES 类型的加密算法。
 - 支持需要初始化向量 `iv` 的加密算法，例如 AES-128-CFB1。使用这类算法进行加解密时，需要显式输入初始化向量 `iv` 作为函数的第二个参数。`iv` 的最小长度是 16 字节。
 - 密钥轮转不影响解密操作。

## 示例

`INSERT` / `UPDATE` 语句对需要加密的列显式使用加密函数。

```sql
-- 将 plaintext 加密后写入 tbl 表的 cipher_col 列
-- 值列表中的任意一个值使用到了加密函数，就要有对应的权限
INSERT INTO tbl(cipher_col, ...) VALUES(ENHANCED_AES_ENCRYPT(plaintext), ...);
-- 更新密文列
UPDATE tbl SET cipher_col = ENHANCED_AES_ENCRYPT(plaintext) WHERE ...;

```

`SELECT` 语句直接查询密文列，返回密文。

```sql
-- 查询密文列
SELECT cipher_col FROM tbl;

```

密文与其对应的明文直接做比较计算，预期返回假。需要对密文进行解密，或对明文进行加密，再进行比较。

```sql
-- cipher_col 为密文列，12345 为明文数据，无法匹配到相应的密文数据
SELECT ... FROM tbl WHERE cipher_col = '12345';
-- LIKE 语句表现类似，无法匹配到相应的密文数据
SELECT ... FROM tbl WHERE cipher_col LIKE '123%';
-- 对明文数据 '12345' 加密后，预期可以匹配到当前密钥加密的密文数据，可以利用索引。
SELECT ... FROM tbl WHERE cipher_col = ENHANCED_AES_ENCRYPT('12345');
-- 可以将加密列作为常规列进行包括比较在内的各类计算
SELECT ... FROM tbl WHERE tbl.cipher_col = another_tbl.another_cipher_col;
SELECT ... FROM tbl GROUP BY cipher_col ORDER BY cipher_col;

```

## 相关文档

[ENHANCED_AES_DECRYPT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005687252)

[MySQL 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685770)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
