Aller au contenu principal

aes_encrypt

Renvoie une valeur chiffrée de input à l'aide d'AES dans le mode donné avec le padding spécifié. Des longueurs de clé de 16, 24 et 32 bits sont prises en charge. Les combinaisons prises en charge de (mode, padding) sont (ECB, PKCS), (GCM, NONE) et (CBC, PKCS). Les vecteurs d'initialisation (IV) optionnels ne sont pris en charge que pour les modes CBC et GCM. Ceux-ci doivent être de 16 octets pour CBC et de 12 octets pour GCM. Si non fourni, un vecteur aléatoire sera généré et ajouté au début du résultat. Les données authentifiées supplémentaires optionnelles (AAD) ne sont prises en charge que pour GCM. Si fourni pour le chiffrement, la valeur AAD identique doit être fournie pour le déchiffrement. Le mode default est GCM.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.aes_encrypt(input, key, mode=None, padding=None, iv=None, aad=None)

parameter

parameter

Type

Description

input

pyspark.sql.Column ou str

La valeur binaire à chiffrer.

key

pyspark.sql.Column ou str

La phrase secrète à utiliser pour chiffrer les données.

mode

pyspark.sql.Column ou str, facultatif

Spécifie quel mode de chiffrement par bloc doit être utilisé pour chiffrer les messages. Modes valides : ECB, GCM, CBC.

padding

pyspark.sql.Column ou str, facultatif

Spécifie comment remplir les messages dont la longueur n'est pas un multiple de la taille de bloc. Valeurs valides : PKCS, NONE, DEFAULT. Le remplissage DEFAULT signifie PKCS pour ECB, NONE pour GCM et PKCS pour CBC.

iv

pyspark.sql.Column ou str, facultatif

Vecteur d’initialisation facultatif. Pris en charge uniquement pour les modes CBC et GCM. Valeurs valides : Aucune ou « ». Tableau de 16 octets pour le mode CBC. Tableau de 12 octets pour le mode GCM.

aad

pyspark.sql.Column ou str, facultatif

Données authentifiées supplémentaires facultatives. Pris en charge uniquement pour le mode GCM. Il peut s'agir de toute entrée de forme libre et doit être fournie pour le chiffrement et le déchiffrement.

parameter

Type

Description

input

pyspark.sql.Column ou str

La valeur binaire à chiffrer.

key

pyspark.sql.Column ou str

La phrase secrète à utiliser pour chiffrer les données.

mode

pyspark.sql.Column ou str, facultatif

Spécifie quel mode de chiffrement par bloc doit être utilisé pour chiffrer les messages. Modes valides : ECB, GCM, CBC.

padding

pyspark.sql.Column ou str, facultatif

Spécifie comment remplir les messages dont la longueur n'est pas un multiple de la taille de bloc. Valeurs valides : PKCS, NONE, DEFAULT. Le remplissage DEFAULT signifie PKCS pour ECB, NONE pour GCM et PKCS pour CBC.

iv

pyspark.sql.Column ou str, facultatif

Vecteur d’initialisation facultatif. Pris en charge uniquement pour les modes CBC et GCM. Valeurs valides : Aucune ou « ». Tableau de 16 octets pour le mode CBC. Tableau de 12 octets pour le mode GCM.

aad

pyspark.sql.Column ou str, facultatif

Données authentifiées supplémentaires facultatives. Pris en charge uniquement pour le mode GCM. Il peut s'agir de toute entrée de forme libre et doit être fournie pour le chiffrement et le déchiffrement.

Renvoie

pyspark.sql.Column: Une nouvelle colonne qui contient une valeur chiffrée.

Exemples

Exemple 1 : Chiffrer les données avec clé, mode, remplissage, iv et aad

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark", "abcdefghijklmnop12345678ABCDEFGH", "GCM", "DEFAULT",
"000000000000000000000000", "This is an AAD mixed into the input",)],
["input", "key", "mode", "padding", "iv", "aad"]
)
df.select(sf.base64(sf.aes_encrypt(
df.input, df.key, "mode", df.padding, sf.to_binary(df.iv, sf.lit("hex")), df.aad)
)).show(truncate=False)
Output
+-----------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), aad))|
+-----------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4 |
+-----------------------------------------------------------------------+

**Exemple 2** : Chiffrer les données avec la clé, le mode, le remplissage et l’IV

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark", "abcdefghijklmnop12345678ABCDEFGH", "GCM", "DEFAULT",
"000000000000000000000000", "This is an AAD mixed into the input",)],
["input", "key", "mode", "padding", "iv", "aad"]
)
df.select(sf.base64(sf.aes_encrypt(
df.input, df.key, "mode", df.padding, sf.to_binary(df.iv, sf.lit("hex")))
)).show(truncate=False)
Output
+--------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), ))|
+--------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sRNYDAOTjdSEcYBFsAWPL1f |
+--------------------------------------------------------------------+

Exemple 3 : Chiffrer les données avec une clé, un mode et un remplissage

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark SQL", "1234567890abcdef", "ECB", "PKCS",)],
["input", "key", "mode", "padding"]
)
df.select(sf.aes_decrypt(sf.aes_encrypt(df.input, df.key, "mode", df.padding),
df.key, df.mode, df.padding
).cast("STRING")).show(truncate=False)
Output
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, padding, , ), key, mode, padding, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL |
+---------------------------------------------------------------------------------------------+

Exemple 4 : Chiffrer les données avec clé et mode

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark SQL", "0000111122223333", "ECB",)],
["input", "key", "mode"]
)
df.select(sf.aes_decrypt(sf.aes_encrypt(df.input, df.key, "mode"),
df.key, df.mode
).cast("STRING")).show(truncate=False)
Output
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, DEFAULT, , ), key, mode, DEFAULT, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL |
+---------------------------------------------------------------------------------------------+

Exemple 5 : Chiffrer les données avec une clé

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([(
"Spark SQL", "abcdefghijklmnop",)],
["input", "key"]
)
df.select(sf.aes_decrypt(
sf.unbase64(sf.base64(sf.aes_encrypt(df.input, df.key))), df.key
).cast("STRING")).show(truncate=False)
Output
+-------------------------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(unbase64(base64(aes_encrypt(input, key, GCM, DEFAULT, , ))), key, GCM, DEFAULT, ) AS STRING)|
+-------------------------------------------------------------------------------------------------------------+
|Spark SQL |
+-------------------------------------------------------------------------------------------------------------+