VoltageSecureProtectAllKeys

此函数可帮助您定位使用嵌入式格式保留加密 (eFPE) 格式加密的列中的值。这些格式采样密钥轮换,因此您为一段纯文本返回的加密值会不断变化。如果向此函数传递一个未加密的值,它将返回一个包含两列的表:未加密的值以及使用为 eFPE 定义的每个密钥加密的值。表中的行数由 eFPE 格式包含的密钥数决定。通常,您可以在联接中使用此函数的输出来定位表中匹配的加密值。

语法

VoltageSecureProtectAllKeys(value USING PARAMETERS format='eFPE_format'
                            [, config_dfs_path=config_file]
                            [, identity=sd_identity] )

参数

示例

以下示例演示了对 VoltageSecureProtectAllKeys 的简单调用。

=> SELECT VoltageSecureProtectAllKeys('376765616314013' USING PARAMETERS
                                      format='cc_num',
                                      config_dfs_path='/voltagesecure/conf')
          OVER ();

      data       |    protected
-----------------+-----------------
 376765616314013 | XMVMRU9RJVU4013
 376765616314013 | X5FD4KO1UEE4013
 376765616314013 | M7ZXTIQVCPB4013
 376765616314013 | UBOSC9K3EXZ4013
 376765616314013 | ZJ1C50C9L9R4013
(5 rows)

在此示例中,cc_num eFPE 格式定义了 5 个密钥,因此将返回一个包含 5 行的表。

以下示例显示了更常见的用法:查询使用 eFPE 格式加密的表列。

=> SELECT id, first_name, last_name FROM customers3 u
          JOIN (SELECT VoltageSecureProtectAllKeys('376765616314013' USING PARAMETERS
                                                   format='cc_num',
                                                   config_dfs_path='/voltagesecure/conf')
          OVER ()) pak
          ON u.cc_num = pak.protected;

  id  | first_name | last_name
------+------------+-----------
 5345 | Thane      | Ross

(1 row)

在前面的示例中,customers3 表与 VoltageSecureProtectAllKeys 的输出相联接。如果 customers3 表中加密的 cc_num 列值与 VoltageSecureProtectAllKeys 的受保护列中的值匹配,则该表中的所有行都会出现在输出中。

如果您在非 eFPE 格式下使用此函数,将返回错误:

=> SELECT first_name, last_name, ssn FROM customers u
        JOIN (
            SELECT VoltageSecureProtectAllKeys('232-28-0657' USING PARAMETERS format='ssn',
                                               config_dfs_path='/voltagesecure/conf')
            OVER ()
        )
        pak ON u.ssn = pak.protected;
ERROR 5861:  Error calling processPartition() in User Function VoltageSecureProtectAllKeys
at [ProtectAllKeys.cpp:21], error code: 1711, message: Error getting key numbers:
eFPE format required

另请参阅