Udostępnij przez


aes_encrypt

Zwraca zaszyfrowaną wartość input użycia AES w danym mode z określonym paddingelementem . Obsługiwane są długości kluczy 16, 24 i 32 bitów. Obsługiwane kombinacje (, ) to (modeECB, PKCS), (GCM, NONE) i (CBC, PKCS). padding Opcjonalne wektory inicjowania (IV) są obsługiwane tylko dla trybów CBC i GCM. Muszą to być 16 bajtów dla CBC i 12 bajtów dla usługi GCM. Jeśli nie zostanie podana, wektor losowy zostanie wygenerowany i włączony do danych wyjściowych. Opcjonalne dodatkowe uwierzytelnione dane (AAD) są obsługiwane tylko w przypadku usługi GCM. W przypadku szyfrowania należy podać identyczną wartość usługi AAD do odszyfrowywania. Domyślnym trybem jest GCM.

Składnia

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 lub str Wartość binarna do zaszyfrowania.
key pyspark.sql.Column lub str Hasło używane do szyfrowania danych.
mode pyspark.sql.Column lub str, opcjonalnie Określa, który tryb szyfrowania blokowego ma być używany do szyfrowania komunikatów. Prawidłowe tryby: EBC, GCM, CBC.
padding pyspark.sql.Column lub str, opcjonalnie Określa sposób uzupełniania komunikatów, których długość nie jest wielokrotnym rozmiarem bloku. Prawidłowe wartości: PKCS, NONE, DEFAULT. Dopełnienie DOMYŚLNE oznacza PKCS dla EBC, NONE dla GCM i PKCS dla CBC.
iv pyspark.sql.Column lub str, opcjonalnie Opcjonalny wektor inicjowania. Obsługiwane tylko dla trybów CBC i GCM. Prawidłowe wartości: Brak lub "". Tablica 16-bajtowa dla trybu CBC. Tablica 12-bajtowa dla trybu GCM.
aad pyspark.sql.Column lub str, opcjonalnie Opcjonalne dodatkowe uwierzytelnione dane. Obsługiwane tylko w trybie GCM. Może to być dowolne dane wejściowe w dowolnej formie i muszą być udostępniane zarówno na potrzeby szyfrowania, jak i odszyfrowywania.

Zwraca

pyspark.sql.Column: Nowa kolumna zawierająca zaszyfrowaną wartość.

Przykłady

Przykład 1: Szyfrowanie danych przy użyciu klucza, trybu, wypełnienia, iv i 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                           |
+-----------------------------------------------------------------------+

Przykład 2: Szyfrowanie danych przy użyciu klucza, trybu, wypełnienia i 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                        |
+--------------------------------------------------------------------+

Przykład 3: Szyfrowanie danych przy użyciu klucza, trybu i wypełnienia

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

Przykład 4. Szyfrowanie danych przy użyciu klucza i trybu

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

Przykład 5. Szyfrowanie danych przy użyciu klucza

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