DB2 V9.7 for Linux, UNIX, and Windows

数据加密

DB2® 数据库系统提供了若干方法来对存储器中的数据和通过网络传输的数据进行加密。

对存储器中的数据进行加密

可以选择下列方法来对存储器中的数据进行加密:
  • 可以使用加密和解密内置函数 ENCRYPT、DECRYPT_BIN、DECRYPT_CHAR 和 GETHINT 来对数据库表中的数据进行加密。
  • 可以使用 IBM® Database Encryption Expert 来对底层操作系统数据和备份文件进行加密。
  • 如果在 AIX® 操作系统上运行 DB2 Enterprise Server Edition 系统,并且仅关注文件级别加密,那么可使用加密文件系统 (EFS) 来对操作系统数据和备份文件进行加密。

对传输的数据进行加密

要对在客户机与 DB2 数据库之间传输的数据进行加密,可以使用 DATA_ENCRYPT 认证类型,或者使用 DB2 数据库系统对“安全套接字层”(SSL) 的支持。

使用 ENCRYPT、DECRYPT_BIN、DECRYPT_CHAR 和 GETHINT 函数

ENCRYPT 内置函数使用基于密码的加密方法对数据进行加密。这些函数还允许您封装密码提示。密码提示嵌入在加密数据中。一旦加密,对数据进行解密的唯一方式是通过使用正确的密码来解密。选择使用这些函数的开发者应该对忘记的密码和不能用的数据如何管理进行计划。

ENCRYPT 函数的结果是 VARCHAR FOR BIT DATA(最大长度为 32631 字节)。

只能加密 CHAR、VARCHAR 和 FOR BIT DATA。

DECRYPT_BIN 和 DECRYPT_CHAR 函数使用基于密码的解密对数据进行解密。

DECRYPT_BIN 始终返回 VARCHAR FOR BIT DATA,而 DECRYPT_CHAR 始终返回 VARCHAR。因为第一个自变量可能是 CHAR FOR BIT DATA 或 VARCHAR FOR BIT DATA,所以存在结果与第一个自变量不同的情况。

结果的长度取决于到下一个 8 字节边界的字节数。当指定可选提示参数时,结果的长度可能是数据自变量的长度加上 40 再加上到下一个 8 字节边界的字节数。或者,如果未指定可选提示参数,结果的长度可能是数据自变量的长度加上 8 再加上到下一个 8 字节边界的字节数。

GETHINT 函数返回封装的密码提示。密码提示是将帮助数据所有者回忆起密码的短语。例如,可以将“大海”这个单词用作回忆密码“太平洋”的提示。

以下列两种方式之一确定用于对数据加密的密码:

密码的有效长度在 6 和 127 之间,包括 6 和 127。提示的有效长度在 0 和 32 之间,包括 0 和 32。