funktion hmac

Gäller för:kryssa i ja Databricks SQL-kryss markerad ja Databricks Runtime 19 och uppåt

Returnerar den nyckelade hashmeddelandeautentiseringskoden (HMAC) för message att använda key och en hash algorithm.

En HMAC verifierar både integriteten och äktheten hos ett meddelande med hjälp av en delad hemlighet key: en mottagare som har samma key kan beräkna om koden och bekräfta att meddelandet inte ändrats och kom från en part som känner till nyckeln. Vanliga användningsområden inkluderar signering av API-förfrågningar, validering av webhook-payloads och härledning av signeringsnycklar genom att kedja samman HMAC-anrop (till exempel AWS Signature Version 4).

Syntax

hmac(key, message [, algorithm])

Arguments

  • key: Ett BINARY uttryck. Den hemliga nyckeln.
  • message: Ett BINARY uttryck. Meddelandet att autentisera.
  • algorithm: Ett valfritt STRING uttryck som beskriver hashalgoritmen. Standardvärdet är SHA-256.

Returns

En BINARY.

Resultatet är de råa MAC-bytena. För att erhålla en textuell representation, linda in resultatet med hex funktion eller base64 funktion. Eftersom resultatet är BINARY, kan du mata in det som ett key annat hmac anrop för att kedja nyckelderivationer.

algorithm måste vara en av följande (kasuskänslig, med eller utan bindestreck, till exempel både SHA-256 och SHA256):

  • 'SHA-224'
  • 'SHA-256': Detta är standard.
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

Om något argument är NULL, blir resultatet NULL.

Vanliga felvillkor

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