DBMS_CRYPTO 提供了用于加密和解密所存储数据的接口,并且可以与 PL 程序一起使用。

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

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

DBMS_CRYPTO 安全模型

OceanBase 数据库在 SYS schema 中安装此系统包。您可以根据需要向现有用户和角色授予该系统包的访问权限。

DBMS_CRYPTO 数据类型

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

数据类型

描述

BLOB

源或目标二进制 LOB

CLOB

源或目标字符 LOB

PLS_INTEGER

指定加密算法类型(与 BLOB,CLOB 和 RAW 数据类型一起使用)

RAW

源或目标 RAW 缓冲区

DBMS_CRYPTO 算法

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

DBMS_CRYPTO 系统包支持如下加密算法:

名称

描述

ENCRYPT_AES128

密码块高级加密标准。使用 128 位密钥。

ENCRYPT_AES192

密码块高级加密标准。使用 192 位密钥。

ENCRYPT_AES256

密码块高级加密标准。使用 256 位密钥。

DBMS_CRYPTO 系统包支持如下密码块链接算法:

名称

描述

CHAIN_ECB

电码本模式。将整个明文分成若干段相同的小段,然后对每一小段进行加密。

CHAIN_CBC

密码分组链接模式。先将明文切分成若干小段,然后每一小段与初始块或者上一段的密文段进行异或运算后,再与密钥进行加密。

DBMS_CRYPTO 系统包支持如下密码块填充算法:

名称

描述

PAD_PKCS5

提供的填充算法符合 PKCS#5,即基于密码的密码学标准。

DBMS_CRYPTO 使用限制

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

DBMS_CRYPTO 子程序概览

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

子程序

描述

ENCRYPT

使用具有用户提供的密钥和可选 IV (初始化向量)的流或分组密码对 RAW 数据进行加密。

DECRYPT

使用具有用户提供的密钥和可选 IV(初始化向量)的流或分组密码解密 RAW 数据。