更改开始

HASH_CRC32、 HASH_MD5、 HASH_SHA1 和 HASH_SHA256 标量函数

散列函数返回一个固定长度的值,该值是对输入参数应用散列算法的结果。 这些功能用于加密。

阅读语法图跳过可视化语法图HASH_CRC32HASH_MD5HASH_SHA1HASH_SHA256( 表达式)

该模式是 SYSIBM。

表达式
更改开始表示要散列的字符串值的表达式。 表达式必须返回一个内置字符串、图形字符串或二进制字符串。更改结束

结果是通过将哈希算法应用于表达式产生的。 哈希算法由调用的函数名称决定。

函数的计算结果是二进制,结果的长度属性取决于指定的哈希算法。 下表总结了结果的特点。

表 1. 每种算法的结果特征
函数名 算法 结果大小 可返回的不同值数量 哈希函数结果数据类型
更改开始HASH_CRC32更改结束 更改开始CRC32更改结束 更改开始32 位更改结束 更改开始2 32更改结束 更改开始BINARY(4)更改结束
HASH_MD5 MD5 128 位 2128 二进制(16)
HASH_SHA1 SHA1 160 位 2160 二进制(20)
HASH_SHA256 SHA2-256 256 位 2256 二进制(32)

如果第一个自变量可以为空,那么结果可以为空。 如果第一个自变量为空,那么结果为空值。

注意在 SHA1 和 MD5 算法中都发现了安全缺陷。 可以在适用的一致性文档(如美国国家标准技术学会 (NIST) 特殊出版物 800-131A)中找到可接受的散列算法。

注意

语法替代方案:
更改开始散列函数 HASH_MD5、 HASH_SHA1 和 HASH_SHA256 与以下散列函数类似,其中散列算法被指定为整数常数值 0、1 或 2:
HASH ( expression , integer-constant )

对于这些散列函数,建议调用HASH函数进行散列,以提高应用程序的便携性。

更改结束

示例

示例 1:
调用 HASH_CRC32 函数,使用 CRC32 算法生成一个哈希值。
SELECT HEX(HASH_CRC32('ABCDEFGHIJKLMNOPQRZTUVWXYZ'))
FROM SYSIBM.SYSDUMMYU;

返回值如下:

X'B4B86309'
示例 2:
调用 HASH_MD5 函数,使用 MD5 算法生成一个哈希值。
SELECT HEX(HASH_MD5('ABCDEFGHIJKLMNOPQRZTUVWXYZ'))
FROM SYSIBM.SYSDUMMYU;

返回值如下:

X'E433BC7BE26A152E54E2EA0C92778160'
示例 3:
调用 HASH_SHA1 函数,使用 SHA1 算法生成一个哈希值。
SELECT HEX(HASH_SHA1('ABCDEFGHIJKLMNOPQRZTUVWXYZ'))
FROM SYSIBM.SYSDUMMYU;

返回值如下:

X'8F34563A0FA4BA1A285C8035935D010629385474'
示例 4:
调用 HASH_SHA256 函数,使用 SHA256 算法生成散列值。
SELECT HEX(HASH_SHA256('ABCDEFGHIJKLMNOPQRZTUVWXYZ'))
FROM SYSIBM.SYSDUMMYU;

返回值如下:

X'403AC046B04F4A749E9810971083997B71F2B6FAF87CECCDE657E93FFCF700F0'
更改结束