Compartilhar via


try_aes_decrypt

Essa é uma versão especial que aes_decrypt executa a mesma operação, mas retorna um valor NULL em vez de gerar um erro se a descriptografia não puder ser executada. Retorna um valor descriptografado do uso do input AES mode com padding. Há suporte para comprimentos de chave de 16, 24 e 32 bits. As combinações com suporte de (mode, padding) são (ECB, PKCS), (GCM, NONE) e (CBC, PKCS). Os dados autenticados adicionais opcionais (AAD) só têm suporte para GCM. Se for fornecido para criptografia, o valor idêntico do AAD deverá ser fornecido para descriptografia. O modo padrão é GCM.

Sintaxe

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 ou str O valor binário a ser descriptografado.
key pyspark.sql.Column ou str A frase secreta a ser usada para descriptografar os dados.
mode pyspark.sql.Column ou str, opcional Especifica qual modo de criptografia de bloco deve ser usado para descriptografar mensagens. Modos válidos: BCE, GCM, CBC.
padding pyspark.sql.Column ou str, opcional Especifica como armazenar mensagens cujo comprimento não é um múltiplo do tamanho do bloco. Valores válidos: PKCS, NONE, DEFAULT. O preenchimento PADRÃO significa PKCS para BCE, NONE para GCM e PKCS para CBC.
aad pyspark.sql.Column ou str, opcional Dados autenticados adicionais opcionais. Só há suporte para o modo GCM. Isso pode ser qualquer entrada de forma livre e deve ser fornecida para criptografia e descriptografia.

Devoluções

pyspark.sql.Column: uma nova coluna que contém um valor descriptografado ou um valor NULL.

Exemplos

Exemplo 1: Descriptografar dados com chave, modo, preenchimento e 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                                                                    |
+-------------------------------------------------------------------------+

Exemplo 2: Falha ao descriptografar dados com chave, modo, preenchimento e 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                                                                     |
+-------------------------------------------------------------------------+

Exemplo 3: Descriptografar dados com chave, modo e preenchimento

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

Exemplo 4: Descriptografar dados com chave e 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                                                                 |
+----------------------------------------------------------------------+

Exemplo 5: Descriptografar dados com chave

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