fungsi hmac

Berlaku untuk:tanda centang ya Databricks SQL ditandai ya Databricks Runtime 19 ke atas

Mengembalikan kode otentikasi pesan keyed-hash (HMAC) dari message penggunaan key dan sebuah hash algorithm.

HMAC memverifikasi baik integritas maupun keaslian pesan menggunakan rahasia keybersama: penerima yang memegang rahasia tersebut key dapat menghitung ulang kode dan memastikan pesan tersebut tidak diubah dan berasal dari pihak yang mengetahui kuncinya. Penggunaan umum termasuk menandatangani permintaan API, memvalidasi payload webhook, dan menurunkan kunci penandatanganan dengan menghubungkan panggilan HMAC (misalnya, AWS Signature Version 4).

Syntax

hmac(key, message [, algorithm])

Arguments

  • key: Sebuah BINARY ekspresi. Kunci rahasia.
  • message: Sebuah BINARY ekspresi. Pesan yang harus diautentikasi.
  • algorithm: Ekspresi opsional STRING yang mendeskripsikan algoritma hash. Defaultnya adalah SHA-256.

Returns

BINARY.

Hasilnya adalah byte MAC mentah. Untuk memperoleh representasi tekstual, bungkus hasilnya dengan hex fungsi atau base64 fungsi. Karena hasilnya adalah BINARY, Anda dapat mengumpatnya kembali sebagai key panggilan lain hmac untuk derivasi kunci rantai.

algorithm harus salah satu dari berikut ini (tidak sensitif huruf besar/kecil, dengan atau tanpa tanda hubung, misalnya keduanya SHA-256 dan SHA256):

  • 'SHA-224'
  • 'SHA-256': Ini adalah default.
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

Jika ada argumen yang , NULLhasilnya adalah NULL.

Kondisi kesalahan umum

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