hmac Função

Aplica-se a:com marca de verificação sim Databricks SQL marcado sim Databricks Runtime 19 e acima

Retorna o código de autenticação da mensagem hash com chave (HMAC) de message usar key e um hash algorithm.

Um HMAC verifica tanto a integridade quanto a autenticidade de uma mensagem usando um segredo keycompartilhado: um destinatário que detém o mesmo key pode recalcular o código e confirmar que a mensagem não foi alterada e veio de uma parte que conhece a chave. Usos comuns incluem assinatura de solicitações de API, validação de payloads de webhooks e derivação de chaves de assinatura por meio de chamadas HMAC em cadeia (por exemplo, AWS Signature Version 4).

Syntax

hmac(key, message [, algorithm])

Arguments

  • key: uma BINARY expressão. A chave secreta.
  • message: uma BINARY expressão. A mensagem para autenticar.
  • algorithm: Uma expressão opcional STRING que descreve o algoritmo de hash. O padrão é SHA-256.

Returns

Um BINARY.

O resultado são os bytes MAC brutos. Para obter uma representação textual, envolva o resultado com hex função ou base64 função. Como o resultado é BINARY, você pode reintroduzi-lo como o key de outra hmac chamada para derivações de chaves em cadeia.

algorithm deve ser um dos seguintes (insensível a maiúsculas minúsculas, com ou sem hífen, por exemplo, ambos SHA-256 e SHA256):

  • 'SHA-224'
  • 'SHA-256': Esse é o padrão.
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

Se qualquer argumento for NULL, o resultado é NULL.

Condições de erro comuns

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