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 函数和简要描述。
子程序 | 描述 |
---|---|
使用具有用户提供的密钥和可选 IV (初始化向量)的流或分组密码对 RAW 数据进行加密。 | |
使用具有用户提供的密钥和可选 IV(初始化向量)的流或分组密码解密 RAW 数据。 |