Partilhar via


try_aes_decrypt

Esta é uma versão especial de aes_decrypt que realiza a mesma operação, mas devolve um valor NULL em vez de gerar um erro se a desencriptação não puder ser realizada. Devolve um valor desencriptado de input usando AES em mode com padding. São suportados comprimentos de chave de 16, 24 e 32 bits. Combinações suportadas de (mode, padding) são (ECB, PKCS), (GCM, NONE) e (CBC, PKCS). Dados adicionais autenticados opcionais (AAD) são suportados apenas para GCM. Se for fornecido para encriptação, o valor AAD idêntico deve ser fornecido para a desencriptação. 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 desencriptar.
key pyspark.sql.Column ou str A frase-passe a usar para desencriptar os dados.
mode pyspark.sql.Column ou força, opcional Especifica qual o modo de cifra por blocos que deve ser usado para desencriptar mensagens. Modos válidos: ECB, GCM, HEMOGRAMA.
padding pyspark.sql.Column ou força, opcional Especifica como encher mensagens cujo comprimento não é múltiplo do tamanho do bloco. Valores válidos: PKCS, NENHUM, PADRÃO. O preenchimento PADRÃO significa PKCS para ECB, NENHUM para GCM e PKCS para CBC.
aad pyspark.sql.Column ou força, opcional Dados autenticados adicionais opcionais. Só é suportado para o modo GCM. Esta pode ser qualquer entrada livre e deve ser fornecida tanto para encriptação como para desencriptação.

Devoluções

pyspark.sql.Column: Uma nova coluna que contém um valor desencriptado ou um valor NULL.

Examples

Exemplo 1: Descifrar 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: Falhei em desencriptar dados com key, mode, padding 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: Desencriptar 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: Desencriptar 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: Decifrar 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                                                             |
+------------------------------------------------------------------+