ENCRYPT_TDES 函数

通过对它的第一个参数应用 TDES(“三重数据加密标准”,有时也称为 DES3)算法,ENCRYPT_TDES 函数返回加密字符表达式或 BLOB 或 CLOB 值的结果的值。此算法比由 ENCRYPT_AES 函数使用的 AES 算法慢一些,但被认为更安全一些。作为加密开销所需的磁盘空间与 ENCRYPT_AES 需要的类似,但由于 ENCRYPT_TDES 的块大小更小一些,因此此算法所需空间更小一些。(要了解如何估算加密了的字符串的大小的讨论,请参阅“计算加密的数据的存储需求”计算加密的数据的存储需求。)对于 BLOB 或 CLOB 值,将加密了的对象临时地存储在 SBSPACENAME 配置参数指定的缺省的 sbspace 中。

前面段落罗列的在性能、防篡改和返回的 encrypted_data 大小方面的差异,是 ENCRYPT_TDESENCRYPT_AES 函数之间的实际差异,反过来,就下列特性而言,遵循出现在前页上 ENCRYPT_AES 的描述中出现的相同的规则、缺省值和限制:

  • 所需的第一个参数(要被加密的明文 data 值)
  • 显式的或缺省的第二个参数(password 字符串还必须是要解密返回的 encrypted_data 值的 DECRYPT_CHARDECRYPT_BINARY 的参数)。必须对此指定,除非通过 SET ENCRYPTION 语句已设置了缺省的 session password
  • 可能帮助忘记 password 的用户的可选的第三个参数(hint 值)。如果您随后不可记起为 password 定义了的显式的或缺省的 hint,则可使用从 ENCRYPT_TDES 返回的值作为 GETHINT 的参数来检索该 hint
下例示例从 UPDATE 语句的 SET 子句调用 ENCRYPT_TDES。在此,session password 为 'PERSEPHONE',且 hint 字符串为 "pomegranate",表 tabU 的列 colU 作为 data 参数。因为对所有 tabU 的行,WHERE 子句条件 "1=1" 都是真,因此,此语句的作用是以通过 ENCRYPT_TDES 实施的算法返回的加密的字符串替换每个明文 colU 值:
EXEC SQL SET ENCRYPTION PASSWORD 'PERSEPHONE' WITH HINT 'pomegranate';
          EXEC SQL UPDATE tabU SET colU = ENCRYPT_TDES (colU) WHERE 1=1;

此示例假设 colU 的字符数据类型有足够的大小来存储新的加密的数据,而不发生截断。(更为谨慎的示例可能在 UPDATE 之前执行适当的 ALTER TABLE 语句。)

要获取关于在 GBase 8s 数据库的列值中使用数据加密的附加信息,请参阅 加密和解密函数SET ENCRYPTION PASSWORD 语句