SHA2 函数
简介
SHA2 函数是 SHA-2 系列哈希算法的统一接口,通过 bit_length 参数选择具体的 SHA-2 变体(SHA-224、SHA-256、SHA-384、SHA-512)。SHA-2 系列算法可以将任意长度的数据映射为固定长度的哈希值,输出为十六进制字符串,具体长度取决于所选的变体。
语法
sha2(expr, bit_length)
参数说明
expr: 需要计算哈希值的输入数据,支持 STRING、VARCHAR、CHAR、BINARY 类型。
bit_length: 整数类型(INT),指定使用的 SHA-2 变体。支持以下值:
0 — 等同于 256,使用 SHA-256 算法
224 — 使用 SHA-224 算法,输出 56 个字符的十六进制字符串
256 — 使用 SHA-256 算法,输出 64 个字符的十六进制字符串
384 — 使用 SHA-384 算法,输出 96 个字符的十六进制字符串
512 — 使用 SHA-512 算法,输出 128 个字符的十六进制字符串
返回结果
返回一个 STRING 类型的值,表示计算得到的十六进制哈希字符串。输出长度取决于 bit_length 参数:
| bit_length | 输出长度(字符数) |
|---|
| 0 或 256 | 64 |
| 224 | 56 |
| 384 | 96 |
| 512 | 128 |
使用示例
-
使用 SHA-256(bit_length=256)计算哈希值:
SELECT sha2('abc', 256) AS res;
+------------------------------------------------------------------+
| res |
+------------------------------------------------------------------+
| ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
+------------------------------------------------------------------+
-
使用 SHA-224(bit_length=224)计算哈希值:
SELECT sha2('abc', 224) AS res;
+----------------------------------------------------------+
| res |
+----------------------------------------------------------+
| 23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 |
+----------------------------------------------------------+
-
使用 SHA-384(bit_length=384)计算哈希值:
SELECT sha2('abc', 384) AS res;
+--------------------------------------------------------------------------------------------------+
| res |
+--------------------------------------------------------------------------------------------------+
| cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 |
+--------------------------------------------------------------------------------------------------+
-
使用 SHA-512(bit_length=512)计算哈希值:
SELECT sha2('abc', 512) AS res;
+----------------------------------------------------------------------------------------------------------------------------------+
| res |
+----------------------------------------------------------------------------------------------------------------------------------+
| ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f |
+----------------------------------------------------------------------------------------------------------------------------------+
-
使用 bit_length=0(等同于 SHA-256):
SELECT sha2('abc', 0) AS res;
+------------------------------------------------------------------+
| res |
+------------------------------------------------------------------+
| ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
+------------------------------------------------------------------+
-
当输入为 NULL 时:
SELECT sha2(NULL, 256) AS res;
+------+
| res |
+------+
| NULL |
+------+
注意事项
- 当输入参数
expr 为 NULL 时,返回结果为 NULL。
- 当
bit_length 为 0 时,等同于 bit_length 为 256,即使用 SHA-256 算法。
- 当
bit_length 不是 0、224、256、384、512 中的任何一个时,函数将报错。
- SHA-2 系列哈希值是不可逆的,即无法从哈希值推导出原始数据。
- 如果只需要使用固定的 SHA-2 变体,也可以直接使用对应的独立函数:
sha224()、sha256()、sha384()、sha512()。