Compartir vía


try_aes_decrypt

Se trata de una versión especial de aes_decrypt que realiza la misma operación, pero devuelve un valor NULL en lugar de generar un error si no se puede realizar el descifrado. Devuelve un valor descifrado del uso de input AES en mode con 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 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.try_aes_decrypt(input, key, mode=None, padding=None, aad=None)

Parámetros

Parámetro Tipo Description
input pyspark.sql.Column o str Valor binario que se va a descifrar.
key pyspark.sql.Column o str Frase de contraseña que se va a usar para descifrar los datos.
mode pyspark.sql.Column o str, opcional Especifica el modo de cifrado de bloques que se debe usar para descifrar 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.
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 descifrado o un valor NULL.

Examples

Ejemplo 1: Descifrar datos con clave, modo, relleno y aad

from pyspark.sql import functions as sf
df = spark.createDataFrame([(
    "AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4",
    "abcdefghijklmnop12345678ABCDEFGH", "GCM", "DEFAULT",
    "This is an AAD mixed into the input",)],
    ["input", "key", "mode", "padding", "aad"]
)
df.select(sf.try_aes_decrypt(
    sf.unbase64(df.input), df.key, "mode", df.padding, df.aad
).cast("STRING")).show(truncate=False)
+-------------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, aad) AS STRING)|
+-------------------------------------------------------------------------+
|Spark                                                                    |
+-------------------------------------------------------------------------+

Ejemplo 2: No se pudieron descifrar los datos con clave, modo, relleno y aad

from pyspark.sql import functions as sf
df = spark.createDataFrame([(
    "AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4",
    "abcdefghijklmnop12345678ABCDEFGH", "CBC", "DEFAULT",
    "This is an AAD mixed into the input",)],
    ["input", "key", "mode", "padding", "aad"]
)
df.select(sf.try_aes_decrypt(
    sf.unbase64(df.input), df.key, "mode", df.padding, df.aad
).cast("STRING")).show(truncate=False)
+-------------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, aad) AS STRING)|
+-------------------------------------------------------------------------+
|NULL                                                                     |
+-------------------------------------------------------------------------+

Ejemplo 3: Descifrar datos con clave, modo y relleno

from pyspark.sql import functions as sf
df = spark.createDataFrame([(
    "AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg=",
    "abcdefghijklmnop12345678ABCDEFGH", "CBC", "DEFAULT",)],
    ["input", "key", "mode", "padding"]
)
df.select(sf.try_aes_decrypt(
    sf.unbase64(df.input), df.key, "mode", df.padding
).cast("STRING")).show(truncate=False)
+----------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, ) AS STRING)|
+----------------------------------------------------------------------+
|Spark                                                                 |
+----------------------------------------------------------------------+

Ejemplo 4: Descifrar datos con clave y modo

from pyspark.sql import functions as sf
df = spark.createDataFrame([(
    "AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg=",
    "abcdefghijklmnop12345678ABCDEFGH", "CBC", "DEFAULT",)],
    ["input", "key", "mode", "padding"]
)
df.select(sf.try_aes_decrypt(
    sf.unbase64(df.input), df.key, "mode"
).cast("STRING")).show(truncate=False)
+----------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, DEFAULT, ) AS STRING)|
+----------------------------------------------------------------------+
|Spark                                                                 |
+----------------------------------------------------------------------+

Ejemplo 5: Descifrar datos con clave

from pyspark.sql import functions as sf
df = spark.createDataFrame([(
    "83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94",
    "0000111122223333",)],
    ["input", "key"]
)
df.select(sf.try_aes_decrypt(
    sf.unhex(df.input), df.key
).cast("STRING")).show(truncate=False)
+------------------------------------------------------------------+
|CAST(try_aes_decrypt(unhex(input), key, GCM, DEFAULT, ) AS STRING)|
+------------------------------------------------------------------+
|Spark                                                             |
+------------------------------------------------------------------+