Skip to content

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()