hmac-Funktion

Gilt für:Haken markiert ja Databricks SQL Haken markiert ja Databricks Runtime 19 und höher

Gibt den Keyed-Hash-Nachrichten-Authentifizierungscode (HMAC) von Verwendung messagekey und einem Hash algorithmzurück.

Ein HMAC überprüft sowohl die Integrität als auch die Echtheit einer Nachricht mithilfe eines gemeinsamen Geheimnisses: Ein Empfänger, der dieses key Geheimnis keybesitzt, kann den Code neu berechnen und bestätigen, dass die Nachricht nicht verändert wurde und von einer Partei stammt, die den Schlüssel kennt. Häufige Anwendungen sind das Signieren von API-Anfragen, die Validierung von Webhook-Payloads und das Ableiten von Signierungsschlüsseln durch Verkettung von HMAC-Aufrufen (zum Beispiel AWS Signature Version 4).

Syntax

hmac(key, message [, algorithm])

Arguments

  • key: Ein BINARY-Ausdruck. Der geheime Schlüssel.
  • message: Ein BINARY-Ausdruck. Die Nachricht zur Authentifizierung.
  • algorithm: Ein optionaler STRING Ausdruck, der den Hash-Algorithmus beschreibt. Der Standardwert lautet SHA-256.

Returns

Ein BINARY.

Das Ergebnis sind die rohen MAC-Bytes. Um eine textuelle Darstellung zu erhalten, wird das Ergebnis mit hex Funktion oder base64 Funktion umwickelt. Denn das Ergebnis ist BINARY, können Sie es als Aufruf key eines anderen hmac Aufrufs zurückgeben, um Schlüsselableitungen zu ketten.

algorithm muss eines der folgenden sein (kleinschreibunsensitiv, mit oder ohne Bindestrich, zum Beispiel sowohl als auch SHA-256SHA256):

  • 'SHA-224'
  • 'SHA-256': Das ist der Standard.
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

Wenn ein Argument ist NULL, ist das Ergebnis NULL.

Häufige Fehlerbedingungen

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