类别:

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

SHA1_BINARY

返回一个 20 字节的二进制值,其包含 160 位 SHA-1 消息摘要。

语法

SHA1_BINARY(<msg>)
Copy

实参

msg

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

返回

返回值的数据类型是 BINARY。

使用说明

  • SHA1 系列函数主要用于与其他系统向后兼容。为了获得更安全的加密,Snowflake 建议使用 SHA2 系列函数。

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

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

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

示例

SELECT sha1_binary('Snowflake');

------------------------------------------+
         SHA1_BINARY('SNOWFLAKE')         |
------------------------------------------+
 FDA76B0BCC1E87CF259B1D1E3271D76F590FB5DD |
------------------------------------------+
Copy

输出的数据类型是 BINARY 并且可以存储在 BINARY 列中:

创建并填写表:

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_sha1_binary
  FROM sha_table
  ORDER BY v;
+-------+------------------------------------------+
| V     | V_AS_SHA1_BINARY                         |
|-------+------------------------------------------|
| AbCd0 | 9DDB991863D53B35A52C490DB256207C776AB8D8 |
+-------+------------------------------------------+
Copy
语言: 中文