hmac functie

Van toepassing op:vinkje gemarkeerd ja Databricks SQL vinkje gemarkeerd ja Databricks Runtime 19 en hoger

Geeft de keyed-hash message authenticatiecode (HMAC) terug van het gebruik key van message en een hash algorithm.

Een HMAC verifieert zowel de integriteit als de authenticiteit van een bericht met behulp van een gedeeld geheim key: een ontvanger die hetzelfde key bezit kan de code opnieuw berekenen en bevestigen dat het bericht niet is gewijzigd en afkomstig is van een partij die de sleutel kent. Veelvoorkomende toepassingen zijn het ondertekenen van API-verzoeken, het valideren van webhook-payloads en het afleiden van ondertekeningssleutels door HMAC-aanroepen aan elkaar te koppelen (bijvoorbeeld AWS Signature Version 4).

Syntax

hmac(key, message [, algorithm])

Arguments

  • key: een BINARY-expressie. De geheime sleutel.
  • message: een BINARY-expressie. De boodschap om te authenticeren.
  • algorithm: Een optionele STRING expressie die het hash-algoritme beschrijft. De standaardwaarde is SHA-256.

Returns

A BINARY.

Het resultaat is de ruwe MAC-bytes. Om een tekstuele representatie te verkrijgen, wikkel je het resultaat in hex functie of base64 functie. Omdat het resultaat is BINARY, kun je het terugvoeren als het van een key andere hmac aanroep om sleutelafleidingen te ketenen.

algorithm moet een van de volgende zijn (naam-ongevoelig, met of zonder koppelteken, bijvoorbeeld zowel SHA-256 als SHA256):

  • 'SHA-224'
  • 'SHA-256': Dit is de standaard.
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

Als een argument is NULL, is het resultaat NULL.

Algemene foutvoorwaarden

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