Compartir por


aes_encrypt

Devuelve un valor cifrado de uso de input AES en dado mode con el especificado padding. Se admiten longitudes de clave de 16, 24 y 32 bits. Las combinaciones admitidas de (mode, padding) son (ECB, PKCS), (GCM, NONE) y (CBC, PKCS). Los vectores de inicialización opcionales (IVs) solo se admiten para los modos CBC y GCM. Estos deben ser de 16 bytes para CBC y 12 bytes para GCM. Si no se proporciona, se generará un vector aleatorio y se anteponerá a la salida. Los datos autenticados adicionales opcionales (AAD) solo se admiten para GCM. Si se proporciona para el cifrado, se debe proporcionar el valor de AAD idéntico para el descifrado. El modo predeterminado es GCM.

Syntax

from pyspark.sql import functions as sf

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

Parámetros

Parámetro Tipo Description
input pyspark.sql.Column o str Valor binario que se va a cifrar.
key pyspark.sql.Column o str Frase de contraseña que se va a usar para cifrar los datos.
mode pyspark.sql.Column o str, opcional Especifica qué modo de cifrado de bloques se debe usar para cifrar los mensajes. Modos válidos: ECB, GCM, CBC.
padding pyspark.sql.Column o str, opcional Especifica cómo rellenar los mensajes cuya longitud no es un múltiplo del tamaño del bloque. Valores válidos: PKCS, NONE, DEFAULT. El relleno DEFAULT significa PKCS para ECB, NONE para GCM y PKCS para CBC.
iv pyspark.sql.Column o str, opcional Vector de inicialización opcional. Solo se admite para los modos CBC y GCM. Valores válidos: None o "". Matriz de 16 bytes para el modo CBC. Matriz de 12 bytes para el modo GCM.
aad pyspark.sql.Column o str, opcional Datos autenticados adicionales opcionales. Solo se admite para el modo GCM. Puede ser cualquier entrada de forma libre y debe proporcionarse para el cifrado y el descifrado.

Devoluciones

pyspark.sql.Column: una nueva columna que contiene un valor cifrado.

Examples

Ejemplo 1: Cifrado de datos con clave, modo, relleno, iv y 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                           |
+-----------------------------------------------------------------------+

Ejemplo 2: Cifrado de datos con clave, modo, relleno e 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                        |
+--------------------------------------------------------------------+

Ejemplo 3: Cifrado de datos con clave, modo y relleno

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

Ejemplo 4: Cifrado de datos con clave y modo

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

Ejemplo 5: Cifrado de datos con clave

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