hmac Fonction

S’applique à :coché oui Databricks SQL coché oui Databricks Runtime 19 et supérieur

Retourne le code d’authentification par message à hachage à clé (HMAC) d’utiliser messagekey et un hachage algorithm.

Un HMAC vérifie à la fois l’intégrité et l’authenticité d’un message à l’aide d’un secret keypartagé : un destinataire qui le détient key peut recalculer le code et confirmer que le message n’a pas été modifié et provient d’une partie connaissant la clé. Les usages courants incluent la signature de requêtes API, la validation des charges utiles de webhook, et la dérivation de clés de signature en chaînant des appels HMAC (par exemple, AWS Signature Version 4).

Syntax

hmac(key, message [, algorithm])

Arguments

  • key : Une expression BINARY. Clé secrète.
  • message : Une expression BINARY. Le message à authentifier.
  • algorithm: Une expression optionnelle STRING décrivant l’algorithme de hachage. La valeur par défaut est SHA-256.

Returns

Un BINARY.

Le résultat est les octets MAC bruts. Pour obtenir une représentation textuelle, enroulez le résultat avec hex fonction ou base64 fonction. Parce que le résultat est BINARY, vous pouvez le réintroduire comme un key autre hmac appel à des dérivations de clés en chaîne.

algorithm doit être l’un des suivants (insensible à la casse, avec ou sans le trait d’union, par exemple à la fois SHA-256 et SHA256) :

  • 'SHA-224'
  • 'SHA-256': C’est la norme par défaut.
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

Si un argument est NULL, le résultat est NULL.

Conditions d’erreur courantes

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