select 语句中的 DB2 加密字段

DB2 encrypt field in select statement

所以我需要做一个select语句,同时加密SHA2_512中的一个字段。我不确定它是哪个 DB2 版本,但我尝试了两个查询,但都不起作用。

尝试此查询时:

SELECT HEX(HASH_SHA256('ABCDEFGHIJKLMNOPQRZTUVWXYZ'))
FROM SYSIBM.SYSDUMMY1;

我收到以下错误:

Error: DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884, SQLERRMC=FUNCTION;HASH_SHA256, DRIVER=3.71.22 SQLState: 42884 ErrorCode: -440 Error: DB2 SQL Error: SQLCODE=-514, SQLSTATE=26501, SQLERRMC=SQL_CURLH200C1, DRIVER=3.71.22 SQLState: 26501 ErrorCode: -514

使用此查询时

SELECT hash('Charlie at IBM', 3)
FROM SYSIBM.SYSDUMMYU;

Error: DB2 SQL Error: SQLCODE=-440, SQLSTATE=42884, SQLERRMC=FUNCTION;HASH, DRIVER=3.71.22 SQLState: 42884 ErrorCode: -440 Error: DB2 SQL Error: SQLCODE=-514, SQLSTATE=26501, SQLERRMC=SQL_CURLH200C1, DRIVER=3.71.22 SQLState: 26501 ErrorCode: -514

(虽然没有哈希函数,查询运行没有任何问题)。有人知道我该如何解决这个问题吗?

我不确定我使用的是哪个 DB2 版本,但是通过使用这些查询我得到了这些结果:

  SELECT GETVARIABLE('SYSIBM.VERSION') FROM SYSIBM.SYSDUMMY1

DSN11015

select  GETVARIABLE('SYSIBM.NEWFUN')  AS COMPATIBILITY from sysibm.sysdummy1

COMPATIBILITY: V11

https://www.ibm.com/docs/en/db2/11.1?topic=functions-hash

https://www.ibm.com/docs/en/db2-for-zos/12?topic=sf-hash-crc32-hash-md5-hash-sha1-hash-sha256

您似乎在 V11 兼容模式下为 Z/OS“DSN11015”使用 Db2-v11。

此版本缺少 z/OS 的 Db2-v12 中存在的标量函数 HASH_SHA256 (and others)。这就是你的 Db2-for-z/os 版本得到 sqlcode -440(没有这样的函数 HASH...)的原因。

在版本 11 中,IBM 记录了一个函数 ENCRYPT_TDES,它可能对您有所帮助。

Background information on using this function.

有本事可以自己写函数