hmac

Retourne le code d’authentification du message de hachage à clé (HMAC) de l’utilisation messagekey et du hachage algorithmdonné . Le résultat est retourné sous forme d’octets MAC bruts ; enroulez-le avec :func :hex ou :func :base64 pour une valeur textuelle. L’algorithme par défaut est SHA-256.

Un HMAC vérifie à la fois l’intégrité et l’authenticité d’un message à l’aide d’un secret keypartagé : un destinataire qui le détient key peut recalculer le code et confirmer que le message n’a pas été modifié et provient d’une partie connaissant la clé. Les usages courants incluent la signature de requêtes API, la validation des charges utiles de webhook, et la dérivation de clés de signature en chaînant des appels HMAC (par exemple, AWS Signature Version 4).

Syntax

from pyspark.sql import functions as sf

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

Paramètres

Paramètre Catégorie Description
key pyspark.sql.Column ou str La clé secrète, en tant que valeur binaire.
message pyspark.sql.Column ou str Le message à authentifier, sous forme de valeur binaire.
algorithm pyspark.sql.Column ou str, facultatif Algorithme de hachage. Valeurs valides : SHA-224, SHA-256, SHA-384, SHA-512, SHA-1, MD5. Le défaut est SHA-256.

Returns

pyspark.sql.Column: Une nouvelle colonne contenant les octets bruts HMAC.

Examples

Exemple 1 : Calculer le HMAC avec l’algorithme par défaut 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|
+----------------------------------------------------------------+

Exemple 2 : Calculer le HMAC avec un algorithme explicite

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