aes_encrypt

Vrátí zašifrovanou hodnotu input použití AES v dané mode zadané hodnotě padding. Podporují se délky klíčů 16, 24 a 32 bitů. Podporované kombinace (mode, padding) jsou (ECB, PKCS), (GCM, NONE) a (CBC, PKCS). Volitelné inicializační vektory (IV) jsou podporovány pouze pro režimy CBC a GCM. Musí to být 16 bajtů pro CBC a 12 bajtů pro GCM. Pokud není zadaný, vygeneruje se náhodný vektor a předepíše se na výstup. Volitelná další ověřená data (AAD) se podporují jenom pro GCM. Pokud je k dispozici šifrování, musí být pro dešifrování zadaná stejná hodnota AAD. Výchozí režim je GCM.

Syntaxe

from pyspark.sql import functions as sf

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

Parametry

Parameter Typ Description
input pyspark.sql.Column nebo str Binární hodnota, která se má šifrovat.
key pyspark.sql.Column nebo str Přístupové heslo, které se má použít k šifrování dat.
mode pyspark.sql.Column nebo str, volitelné Určuje, který režim blokové šifry se má použít k šifrování zpráv. Platné režimy: ECB, GCM, CBC.
padding pyspark.sql.Column nebo str, volitelné Určuje, jak pad zprávy, jejichž délka není násobkem velikosti bloku. Platné hodnoty: PKCS, NONE, DEFAULT. Výchozí odsazení znamená PKCS pro ECB, NONE pro GCM a PKCS pro CBC.
iv pyspark.sql.Column nebo str, volitelné Volitelný inicializační vektor. Podporováno pouze v režimech CBC a GCM. Platné hodnoty: Žádné nebo "". Pole 16 bajtů pro režim CBC Pole 12 bajtů pro režim GCM
aad pyspark.sql.Column nebo str, volitelné Volitelná další ověřená data. Podporuje se pouze v režimu GCM. Může to být jakýkoli vstup ve volném tvaru a musí být k dispozici pro šifrování i dešifrování.

Návraty

pyspark.sql.Column: Nový sloupec, který obsahuje zašifrovanou hodnotu.

Examples

Příklad 1: Šifrování dat pomocí klíče, režimu, odsazení, iv a aad

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)
+-----------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), aad))|
+-----------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4                           |
+-----------------------------------------------------------------------+

Příklad 2: Šifrování dat pomocí klíče, režimu, odsazení a iv

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)
+--------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), ))|
+--------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sRNYDAOTjdSEcYBFsAWPL1f                        |
+--------------------------------------------------------------------+

Příklad 3: Šifrování dat pomocí klíče, režimu a odsazení

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)
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, padding, , ), key, mode, padding, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL                                                                                    |
+---------------------------------------------------------------------------------------------+

Příklad 4: Šifrování dat pomocí klíče a režimu

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)
+---------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(aes_encrypt(input, key, mode, DEFAULT, , ), key, mode, DEFAULT, ) AS STRING)|
+---------------------------------------------------------------------------------------------+
|Spark SQL                                                                                    |
+---------------------------------------------------------------------------------------------+

Příklad 5: Šifrování dat pomocí klíče

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)
+-------------------------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(unbase64(base64(aes_encrypt(input, key, GCM, DEFAULT, , ))), key, GCM, DEFAULT, ) AS STRING)|
+-------------------------------------------------------------------------------------------------------------+
|Spark SQL                                                                                                    |
+-------------------------------------------------------------------------------------------------------------+