类别:

字符串和二进制函数 (加密哈希)

SHA2、SHA2_HEX

返回一个包含 N 位 SHA-2 消息摘要的十六进制编码字符串,其中 N 是指定的输出摘要大小。

这些函数为同义函数。

语法

SHA2( <msg> [, <digest_size>] )

SHA2_HEX( <msg> [, <digest_size>] )
Copy

实参

必填:

msg

字符串表达式,要哈希处理的消息

可选:

digest_size

输出的大小(以位为单位),对应用于加密字符串的特定 SHA-2 函数:

224 = SHA-224

256 = SHA-256(默认值)

384 = SHA-384

512 = SHA-512

不支持 SHA-512/224 和 SHA-512/256。

返回

返回值的数据类型是 VARCHAR。

使用说明

  • 请勿使用此函数对需要解密的消息进行加密。此函数没有相应的解密函数。(输出的长度与输入的长度无关。输出的位数不一定足以容纳来自输入的所有信息,因此不可能编写可以解密所有可能的有效输入的函数。)

    此函数用于其他目的,例如计算校验和以检测数据损坏。

    如果需要对数据进行加密和解密,请使用以下函数:

示例

SELECT sha2('Snowflake', 224);

----------------------------------------------------------+
                  SHA2('SNOWFLAKE', 224)                  |
----------------------------------------------------------+
 6267d3d7a59929e6864dd4b737d98e3ef8569d9f88a7466647838532 |
----------------------------------------------------------+
Copy

输出的数据类型为字符串 (VARCHAR),可以在 VARCHAR 列中存储:

创建并填写表:

CREATE TABLE sha_table(
    v VARCHAR, 
    v_as_sha1 VARCHAR,
    v_as_sha1_hex VARCHAR,
    v_as_sha1_binary BINARY,
    v_as_sha2 VARCHAR,
    v_as_sha2_hex VARCHAR,
    v_as_sha2_binary BINARY
    );
INSERT INTO sha_table(v) VALUES ('AbCd0');
UPDATE sha_table SET 
    v_as_sha1 = SHA1(v),
    v_as_sha1_hex = SHA1_HEX(v),
    v_as_sha1_binary = SHA1_BINARY(v),
    v_as_sha2 = SHA2(v),
    v_as_sha2_hex = SHA2_HEX(v),
    v_as_sha2_binary = SHA2_BINARY(v)
    ;
Copy

查询和输出如下:

SELECT v, v_as_sha2, v_as_sha2_hex
  FROM sha_table
  ORDER BY v;
+-------+------------------------------------------------------------------+------------------------------------------------------------------+
| V     | V_AS_SHA2                                                        | V_AS_SHA2_HEX                                                    |
|-------+------------------------------------------------------------------+------------------------------------------------------------------|
| AbCd0 | e1d8ba27889d6782008f495473278c4f071995c5549a976e4d4f93863ce93643 | e1d8ba27889d6782008f495473278c4f071995c5549a976e4d4f93863ce93643 |
+-------+------------------------------------------------------------------+------------------------------------------------------------------+
Copy
语言: 中文