hmac

Gibt den Keyed-Hash-Nachrichten-Authentifizierungscode (HMAC) zurück, der message verwendet key und den gegebenen Hash algorithmverwendet. Das Ergebnis wird als rohe MAC-Bytes zurückgegeben; umwickle es mit :func:hex oder :func:base64 für einen textuellen wert. Der Standardalgorithmus ist SHA-256.

Ein HMAC überprüft sowohl die Integrität als auch die Echtheit einer Nachricht mithilfe eines gemeinsamen Geheimnisses: Ein Empfänger, der dieses key Geheimnis keybesitzt, kann den Code neu berechnen und bestätigen, dass die Nachricht nicht verändert wurde und von einer Partei stammt, die den Schlüssel kennt. Häufige Anwendungen sind das Signieren von API-Anfragen, die Validierung von Webhook-Payloads und das Ableiten von Signierungsschlüsseln durch Verkettung von HMAC-Aufrufen (zum Beispiel AWS Signature Version 4).

Syntax

from pyspark.sql import functions as sf

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

Parameter

Parameter Typ Description
key pyspark.sql.Column oder str Der geheime Schlüssel als binärer Wert.
message pyspark.sql.Column oder str Die Nachricht zur Authentifizierung als binärer Wert.
algorithm pyspark.sql.Column oder str, optional Der Hashalgorithmus. Gültige Werte: SHA-224, SHA-256, SHA-384, SHA-512, SHA-1, MD5. Standardmäßig ist SHA-256.

Returns

pyspark.sql.Column: Eine neue Spalte, die die rohen HMAC-Bytes enthält.

Examples

Beispiel 1: Berechnen Sie den HMAC mit dem Standard-SHA-256-Algorithmus

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|
+----------------------------------------------------------------+

Beispiel 2: Berechnen Sie das HMAC mit einem expliziten Algorithmus

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|
+----------------------------------------+