hmac

Returnerar den nyckel-hashade meddelandeautentiseringskoden (HMAC) för message att använda key och den givna hashen algorithm. Resultatet returneras som råa MAC-byte; slå in det med :func:hex eller :func:base64 för ett textvärde. Standardalgoritmen är SHA-256.

En HMAC verifierar både integriteten och äktheten hos ett meddelande med hjälp av en delad hemlighet key: en mottagare som har samma key kan beräkna om koden och bekräfta att meddelandet inte ändrats och kom från en part som känner till nyckeln. Vanliga användningsområden inkluderar signering av API-förfrågningar, validering av webhook-payloads och härledning av signeringsnycklar genom att kedja samman HMAC-anrop (till exempel 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 eller str Den hemliga nyckeln, som ett binärt värde.
message pyspark.sql.Column eller str Meddelandet att autentisera, som ett binärt värde.
algorithm pyspark.sql.Column eller str, valfritt Hash-algoritmen. Giltiga värden: SHA-224, SHA-256, SHA-384, SHA-512, SHA-1, MD5. Standardvärdet är SHA-256.

Returns

pyspark.sql.Column: En ny kolumn som innehåller råa HMAC-byte.

Examples

Exempel 1: Beräkna HMAC med standardalgoritmen SHA-256

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

Exempel 2: Beräkna HMAC med en explicit algoritm

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