---
title: "DBMS_CRYPTO 概述 - OceanBase 数据库 V4.2.1 | OceanBase 文档中心"
description: DBMS_CRYPTO 概述 DBMS_CRYPTO 系统包提供了基本的加密和解密的函数和存储过程。 功能适用性 该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版仅提供 MySQL 模式。 DBMS_CRYPTO 支持多种行业标准的加密和哈希算法，包括 AES 高级加密标准。AES …
---
切换语言

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

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

# DBMS_CRYPTO 概述

更新时间：2026-07-15 22:01:31

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.1/zh-CN/700.reference/500.sql-reference/300.pl-reference/300.pl-oracle/1400.pl-system-package-oracle/3800.dbms-crypto-oracle/100.dbms-crypto-overview-oracle.md)  

`DBMS_CRYPTO` 系统包提供了基本的加密和解密的函数和存储过程。

#### 功能适用性

该内容仅适用于 OceanBase 数据库企业版。OceanBase 数据库社区版仅提供 MySQL 模式。

`DBMS_CRYPTO` 支持多种行业标准的加密和哈希算法，包括 AES 高级加密标准。AES 已获得 NIST 美国国家标准技术研究院（The National Institute of Standards and Technology ）的认可，以取代 DES 数据加密标准（The Data Encryption Standard）。

`DBMS_CRYPTO` 支持对通用的数据类型进行加密和解密，包括 `RAW` 和大对象（`LOB`），例如图像和音频等。此外，`DBMS_CRYPTO` 还提供了全球化支持，可以在不同字符集的数据库之间进行数据加密与解密工作。

## DBMS_CRYPTO 数据类型

`DBMS_CRYPTO` 子程序的参数所使用的数据类型如下：

| **数据类型** | **描述** |
| --- | --- |
| BLOB | 源或目标二进制 `LOB`。 |
| CLOB | 源或目标字符 `LOB`。 |
| PLS_INTEGER | 指定加密算法类型（与 `BLOB`、`CLOB` 和 `RAW` 数据类型一起使用）。 |
| RAW | 源或目标 `RAW` 缓冲区。 |

## DBMS_CRYPTO 算法

`DBMS_CRYPTO` 包含预定义的加密算法、密码块链接算法和密码块填充算法。

- 支持如下加密哈希算法：

  | 名称 | 描述 |
  | --- | --- |
  | HASH_MD4 | 产生输入消息的 128 位散列或消息摘要。 |
  | HASH_MD5 | 也产生 128 位散列，但比 MD4 更复杂。 |
  | HASH_SH1 | 安全散列算法 (SHA-1)。生成 160 位散列。 |
  | HASH_SH256 | SHA-2，生成 256 位散列。 |
  | HASH_SH384 | SHA-2，生成 384 位散列。 |
  | HASH_SH512 | SHA-2，生成 512 位散列。 |
  | HASH_SM3 | SM3 密码杂凑算法，生成 256 位散列。 |
 - 支持如下加密算法：

  | **名称** | **描述** |
  | --- | --- |
  | ENCRYPT_AES128 | 密码块高级加密标准。使用 128 位密钥。 |
  | ENCRYPT_AES192 | 密码块高级加密标准。使用 192 位密钥。 |
  | ENCRYPT_AES256 | 密码块高级加密标准。使用 256 位密钥。 |
  | ENCRYPT_DES | 密码块加密标准。使用 56 位的密钥。 |
  | ENCRYPT_3DES_2KEY | 密码块加密标准。在同一个块上使用 2 个密钥加密 3 次。有效密钥长度为 112 位。 |
  | ENCRYPT_3DES | 密码块加密标准。在同一个块上加密 3 次。 |
 - 支持如下密码块链接算法：

  | **名称** | **描述** |
  | --- | --- |
  | CHAIN_ECB | 电码本模式。将整个明文分成若干段相同的小段，然后对每一小段进行加密。 |
  | CHAIN_CBC | 密码分组链接模式。先将明文切分成若干小段，然后每一小段与初始块或者上一段的密文段进行异或运算后，再与密钥进行加密。 |
  | CHAIN_CFB | 加密反馈模式。启用加密小于块大小的数据单元。 |
  | CHAIN_OFB | 输出回馈模式。允许将块密码作为同步流密码运行。与 CFB 类似，不同之处在于前一个输出块的 n 位移动到等待加密的数据队列的最右侧位置。 |
 - 支持如下密码块填充算法：

  | **名称** | **描述** |
  | --- | --- |
  | PAD_PKCS5 | 提供的填充算法符合 PKCS＃5，即基于密码的密码学标准。 |
  | PAD_NONE | 提供指定无填充算法的选项。调用者必须确保块大小正确，否则包会返回错误。 |

## DBMS_CRYPTO 使用限制

`DBMS_CRYPTO` 不直接支持 `VARCHAR2` 数据类型。在对 `VARCHAR2` 类型的数据执行加密操作之前，必须将其转换为统一数据库字符集 AL32UTF8，然后将其转换为 `RAW` 数据类型。完成这些转换后，可以使用 `DBMS_CRYPTO` 系统包对其进行加密。

## DBMS_CRYPTO 子程序概览

下表列出了 OceanBase 数据库当前版本所支持的 `DBMS_CRYPTO` 子程序和简要描述。

| **子程序** | **描述** |
| --- | --- |
| [ENCRYPT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000221804) | 使用具有用户提供的密钥和可选 IV （初始化向量）的流或分组密码对 `RAW` 数据进行加密。 |
| [DECRYPT](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000221805) | 使用具有用户提供的密钥和可选 IV（初始化向量）的流或分组密码解密 `RAW` 数据。 |
| [HASH](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000221802) | 将所支持的加密哈希算法之一（MD4、MD5、SHA-1 或 SHA-2）应用于数据。 |

 上一篇 下一篇 ![有帮助](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) 咨询热线
