Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Возвращает зашифрованное значение input использования AES в заданном mode с указанным paddingзначением. Поддерживаются длины ключей 16, 24 и 32 бита. Поддерживаемые сочетания (, padding) — (ECBmode, PKCS), (GCM, NONE) и (CBC, PKCS). Необязательные векторы инициализации (IVs) поддерживаются только для режимов CBC и GCM. Они должны быть 16 байтами для CBC и 12 байт для GCM. Если он не указан, то случайный вектор будет создан и предопределен к выходным данным. Необязательные дополнительные данные, прошедшие проверку подлинности (AAD), поддерживаются только для GCM. При условии шифрования для расшифровки необходимо указать идентичное значение AAD. Режим по умолчанию — GCM.
Синтаксис
from pyspark.sql import functions as sf
sf.aes_encrypt(input, key, mode=None, padding=None, iv=None, aad=None)
Параметры
| Параметр | Тип | Description |
|---|---|---|
input |
pyspark.sql.Column или str |
Двоичное значение для шифрования. |
key |
pyspark.sql.Column или str |
Парольная фраза, используемая для шифрования данных. |
mode |
pyspark.sql.Column или str, необязательный |
Указывает, какой режим блочного шифра следует использовать для шифрования сообщений. Допустимые режимы: ECB, GCM, CBC. |
padding |
pyspark.sql.Column или str, необязательный |
Указывает, как заполнять сообщения, длина которых не является кратной размером блока. Допустимые значения: PKCS, NONE, DEFAULT. Заполнение ПО УМОЛЧАНИю означает PKCS для ECB, NONE для GCM и PKCS для CBC. |
iv |
pyspark.sql.Column или str, необязательный |
Необязательный вектор инициализации. Поддерживается только для режимов CBC и GCM. Допустимые значения: Нет или "". 16-байтовый массив для режима CBC. 12-байтовый массив для режима GCM. |
aad |
pyspark.sql.Column или str, необязательный |
Необязательные дополнительные данные, прошедшие проверку подлинности. Поддерживается только для режима GCM. Это может быть любой вход в свободной форме и должен быть предоставлен как для шифрования, так и для расшифровки. |
Возвраты
pyspark.sql.Column: новый столбец, содержащий зашифрованное значение.
Примеры
Пример 1. Шифрование данных с помощью ключа, режима, заполнения, iv и 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 |
+-----------------------------------------------------------------------+
Пример 2. Шифрование данных с помощью ключа, режима, заполнения и 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 |
+--------------------------------------------------------------------+
Пример 3. Шифрование данных с помощью ключа, режима и заполнения
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 |
+---------------------------------------------------------------------------------------------+
Пример 4. Шифрование данных с помощью ключа и режима
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 |
+---------------------------------------------------------------------------------------------+
Пример 5. Шифрование данных с помощью ключа
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 |
+-------------------------------------------------------------------------------------------------------------+