hmac 函數

適用於:勾選標記為是 Databricks SQL 勾選為 Databricks 執行時間 19 及以上

回傳使用key與雜湊algorithm值的message密鑰雜湊訊息認證碼(HMAC)。

HMAC 利用共享秘密驗證訊息的完整性與真實性:持有相同key秘密key的收件人可重新計算代碼,確認訊息未被更改且來自知密鑰的方。 常見用途包括簽署 API 請求、驗證 webhook 有效載荷,以及透過串接 HMAC 呼叫來推導簽署金鑰(例如 AWS 簽章版本 4)。

Syntax

hmac(key, message [, algorithm])

Arguments

  • key:一個 BINARY 表達式。 秘密金鑰。
  • message:一個 BINARY 表達式。 訊息是要驗證的。
  • algorithm:描述雜湊演算法的可選 STRING 表達式。 預設值為 SHA-256。

Returns

A 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