hmac

Geeft de keyed-hash message authenticatiecode (HMAC) terug van het gebruik key van message en de gegeven hash algorithm. Het resultaat wordt teruggegeven als ruwe MAC-bytes; wikkel het in met :func:hex of :func:base64 voor een tekstuele waarde. Het standaard algoritme is SHA-256.

Een HMAC verifieert zowel de integriteit als de authenticiteit van een bericht met behulp van een gedeeld geheim key: een ontvanger die hetzelfde key bezit kan de code opnieuw berekenen en bevestigen dat het bericht niet is gewijzigd en afkomstig is van een partij die de sleutel kent. Veelvoorkomende toepassingen zijn het ondertekenen van API-verzoeken, het valideren van webhook-payloads en het afleiden van ondertekeningssleutels door HMAC-aanroepen aan elkaar te koppelen (bijvoorbeeld AWS Signature Version 4).

Syntax

from pyspark.sql import functions as sf

sf.hmac(key, message, algorithm=None)

Parameters

Parameter Type Description
key pyspark.sql.Column of str De geheime sleutel, als binaire waarde.
message pyspark.sql.Column of str Het bericht om te authenticeren, als een binaire waarde.
algorithm pyspark.sql.Column of str, optioneel Het hash-algoritme. Geldige waarden: SHA-224, SHA-256, SHA-384, SHA-512, SHA-1, MD5. De standaard is SHA-256.

Returns

pyspark.sql.Column: Een nieuwe kolom die de ruwe HMAC-bytes bevat.

Examples

Voorbeeld 1: Bereken de HMAC met het standaard SHA-256-algoritme

from pyspark.sql import functions as sf
df = spark.createDataFrame([("key", "message")], ["key", "message"])
df.select(sf.hex(sf.hmac(df.key, df.message))).show(truncate=False)
+----------------------------------------------------------------+
|hex(hmac(key, message, SHA-256))                                |
+----------------------------------------------------------------+
|6E9EF29B75FFFC5B7ABAE527D58FDADB2FE42E7219011976917343065F58ED4A|
+----------------------------------------------------------------+

Voorbeeld 2: Bereken de HMAC met een expliciet algoritme

from pyspark.sql import functions as sf
df = spark.createDataFrame([("key", "message")], ["key", "message"])
df.select(sf.hex(sf.hmac(df.key, df.message, sf.lit("SHA-1")))).show(truncate=False)
+----------------------------------------+
|hex(hmac(key, message, SHA-1))          |
+----------------------------------------+
|2088DF74D5F2146B48146CAF4965377E9D0BE3A4|
+----------------------------------------+