適用於:
Databricks SQL
執行時間 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