hmac 函数

适用于:勾选标记为是 Databricks SQL 勾选为 Databricks 运行时 19 及以上

返回使用key和哈希algorithm的密钥哈希消息认证码(HMAC)。message

HMAC通过共享密钥验证消息的完整性和真实性:持有共享key密钥key的接收者可以重新计算代码,确认消息未被篡改,且来自知密钥方。 常见用途包括签署 API 请求、验证 webhook 负载,以及通过串联 HMAC 调用(例如 AWS 签名版 4)推导签名密钥。

Syntax

hmac(key, message [, algorithm])

Arguments

  • key:一个 BINARY 表达式。 密钥。
  • message:一个 BINARY 表达式。 信息需要认证。
  • algorithm:描述哈希算法的可选 STRING 表达式。 默认值为 SHA-256。

Returns

BINARY。

结果就是原始的MAC字节。 要获得文本表示,可以用函数或base64函数包裹结果hex。 因为结果是 BINARY,你可以将其作为 key 另一个 hmac 调用的链密钥推导反馈回来。

algorithm必须是以下之一(大小写不区分,带或不带连字符,例如同时和SHA-256SHA256):

  • 'SHA-224'
  • 'SHA-256':这是默认的。
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

如果任意参数为 NULL,结果为 NULL。

常见错误条件

Examples

> SELECT hex(hmac('key', 'message'));
  6E9EF29B75FFFC5B7ABAE527D58FDADB2FE42E7219011976917343065F58ED4A

> SELECT hex(hmac('key', 'message', 'SHA-512'));
  E477384D7CA229DD1426E64B63EBF2D36EBD6D7E669A6735424E72EA6C01D3F8B56EB39C36D8232F5427999B8D1A3F9CD1128FC69F4D75B434216810FA367E98

-- Chaining: the BINARY output of one hmac feeds in as the key of the next.
> SELECT hex(hmac(hmac('key', 'message'), 'message2'));
  28042756E0362D954B61661BB4DEC9FF9F6C970D346CAEB6DB36ED7B735AB38C

-- A NULL argument yields NULL.
> SELECT hmac(CAST(NULL AS BINARY), 'message');
  NULL

-- An unsupported algorithm raises an error.
> SELECT hmac('key', 'message', 'SHA-3');
  Error: INVALID_PARAMETER_VALUE.HMAC_ALGORITHM

-- An empty key raises an error.
> SELECT hmac('', 'message');
  Error: INVALID_PARAMETER_VALUE.HMAC_CRYPTO_ERROR