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 或 25664
22456
38496
512128

使用示例

  1. 使用 SHA-256(bit_length=256)计算哈希值:

    SELECT sha2('abc', 256) AS res;
    +------------------------------------------------------------------+
    |                               res                                |
    +------------------------------------------------------------------+
    | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
    +------------------------------------------------------------------+
  2. 使用 SHA-224(bit_length=224)计算哈希值:

    SELECT sha2('abc', 224) AS res;
    +----------------------------------------------------------+
    |                           res                            |
    +----------------------------------------------------------+
    | 23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 |
    +----------------------------------------------------------+
  3. 使用 SHA-384(bit_length=384)计算哈希值:

    SELECT sha2('abc', 384) AS res;
    +--------------------------------------------------------------------------------------------------+
    |                                               res                                                |
    +--------------------------------------------------------------------------------------------------+
    | cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 |
    +--------------------------------------------------------------------------------------------------+
  4. 使用 SHA-512(bit_length=512)计算哈希值:

    SELECT sha2('abc', 512) AS res;
    +----------------------------------------------------------------------------------------------------------------------------------+
    |                                                               res                                                                |
    +----------------------------------------------------------------------------------------------------------------------------------+
    | ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f |
    +----------------------------------------------------------------------------------------------------------------------------------+
  5. 使用 bit_length=0(等同于 SHA-256):

    SELECT sha2('abc', 0) AS res;
    +------------------------------------------------------------------+
    |                               res                                |
    +------------------------------------------------------------------+
    | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
    +------------------------------------------------------------------+
  6. 当输入为 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()

联系我们
预约咨询
微信咨询
电话咨询