aes_decrypt(col, key)
Описание
Функция aes_decrypt()
расшифровывает данные, зашифрованные с помощью алгоритма AES (Advanced Encryption Standard).
Параметры
col
: Column - зашифрованные данные в бинарном форматеkey
: Column - ключ шифрования (16, 24 или 32 байта для AES-128, AES-192 или AES-256 соответственно)
Возвращаемое значение
Column - расшифрованные данные в бинарном формате
Пример использования
from pyspark.sql.functions import aes_encrypt, aes_decrypt, hex, unhex
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("aes_decrypt_example").getOrCreate()
# Создаем DataFrame с секретными данными
data = [
("Секретное сообщение 1",),
("Секретное сообщение 2",),
("Секретное сообщение 3",)
]
df = spark.createDataFrame(data, ["secret_data"])
# Ключ шифрования (16 байт для AES-128)
key = "0123456789abcdef"
# Шифруем данные
df = df.withColumn("encrypted", aes_encrypt("secret_data", lit(key)))
# Расшифровываем данные
df = df.withColumn("decrypted", aes_decrypt("encrypted", lit(key)))
# Отображаем результаты
df.select("secret_data", hex("encrypted").alias("encrypted_hex"), "decrypted").show(truncate=False)
# Результат:
# +-------------------+--------------------------------+-------------------+
# |secret_data |encrypted_hex |decrypted |
# +-------------------+--------------------------------+-------------------+
# |Секретное сообщение 1|A1B2C3D4E5F6... |Секретное сообщение 1|
# |Секретное сообщение 2|B2C3D4E5F6G7... |Секретное сообщение 2|
# |Секретное сообщение 3|C3D4E5F6G7H8... |Секретное сообщение 3|
# +-------------------+--------------------------------+-------------------+
Примечания
- Использует AES в режиме CBC с PKCS5 padding
- Длина ключа определяет версию AES:
- 16 байт = AES-128
- 24 байта = AES-192
- 32 байта = AES-256
- Возвращает NULL, если входные данные NULL
- Ключ должен быть тем же, что использовался для шифрования
- Для безопасного хранения ключа рекомендуется использовать:
- Системы управления ключами
- Безопасные хранилища конфигурации
- Переменные окружения
- Для шифрования данных используйте
aes_encrypt()