
HASH_CRC32、 HASH_MD5、 HASH_SHA1 和 HASH_SHA256 标量函数
散列函数返回一个固定长度的值,该值是对输入参数应用散列算法的结果。 这些功能用于加密。
该模式是 SYSIBM。
- 表达式
表示要散列的字符串值的表达式。 表达式必须返回一个内置字符串、图形字符串或二进制字符串。
结果是通过将哈希算法应用于表达式产生的。 哈希算法由调用的函数名称决定。
函数的计算结果是二进制,结果的长度属性取决于指定的哈希算法。 下表总结了结果的特点。
| 函数名 | 算法 | 结果大小 | 可返回的不同值数量 | 哈希函数结果数据类型 |
|---|---|---|---|---|
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'

