hmac 関数

適用対象:チェックマーク、はい 、Databricks、SQL 、はい 、Databricks、ランタイム19以上

keyとハッシュalgorithmを用いて、messageのキー付きハッシュメッセージ認証コード(HMAC)を返します。

HMACは共有秘密 keyを用いてメッセージの整合性と真正性の両方を検証します。同じ key を持つ受信者はコードを再計算し、メッセージが改ざんされておらず、鍵を知る第三者からのものであることを確認できます。 一般的な用途には、APIリクエストの署名、ウェブフックペイロードの検証、HMACコールを連鎖して署名キーを導出すること(例:AWS Signature Version 4)があります。

Syntax

hmac(key, message [, algorithm])

Arguments

  • key: BINARY の式。 秘密鍵。
  • message: BINARY の式。 認証のためのメッセージです。
  • algorithm:ハッシュアルゴリズムを記述するオプションの STRING 式です。 既定値は SHA-256 です。

Returns

BINARY です。

その結果、生のMACバイトが得られます。 テキスト表現を得るには、結果を関数またはbase64関数でラップhexします。 結果がBINARYされるため、別のhmac呼び出しのkeyとしてフィードバックして鍵導出をチェーンできます。

algorithm 以下のいずれかでなければなりません(大文字を区別せず、ハイフンの有無にかかわらず、例えば SHA-256 と SHA256の両方の場合)。

  • 'SHA-224'
  • 'SHA-256':これがデフォルトだ。
  • 'SHA-384'
  • 'SHA-512'
  • 'SHA-1'
  • 'MD5'

もし議論がどこか NULLなら、結果は NULL となります。

一般的なエラー状態

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