Pular para o conteúdo principal

try_aes_decrypt

Esta é uma versão especial de aes_decrypt que realiza as mesmas operações, mas retorna um valor NULL em vez de gerar um erro se a descriptografia não puder ser realizada. Retorna um valor descriptografado 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). Os dados autenticados adicionais opcionais (AAD) são suportados apenas para GCM. Caso seja fornecido para criptografia, o mesmo valor AAD deverá ser fornecido para descriptografia. O modo default é GCM.

Sintaxe

Python
from pyspark.sql import functions as sf

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

Parâmetros

Parâmetro

Tipo

Descrição

input

pyspark.sql.Column ou str

O valor binário a ser descriptografado.

key

pyspark.sql.Column ou str

A senha a ser usada para descriptografar os dados.

mode

pyspark.sql.Column ou str, opcional

Especifica qual modo de cifra de bloco deve ser usado para descriptografar as mensagens. Modos válidos: ECB, GCM, CBC.

padding

pyspark.sql.Column ou str, opcional

Especifica como preencher mensagens cujo comprimento não é um múltiplo do tamanho do bloco. Valores válidos: PKCS, NENHUM, padrão. O preenchimento padrão significa PKCS para o BCE, NENHUM para o GCM e PKCS para o CBC.

aad

pyspark.sql.Column ou str, opcional

Dados adicionais autenticados opcionais. Compatível apenas com o modo GCM. Este pode ser qualquer entrada de formato livre e deve ser fornecido tanto para criptografia quanto para descriptografia.

Devoluções

pyspark.sql.ColumnUma nova coluna que contém um valor descriptografado ou um valor NULL.

Exemplos

Exemplo 1 : Descriptografar dados com key, modo, preenchimento e aad

Python
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)
Output
+-------------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, aad) AS STRING)|
+-------------------------------------------------------------------------+
|Spark |
+-------------------------------------------------------------------------+

Exemplo 2 : Falha ao descriptografar dados com key, modo, preenchimento e aad

Python
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)
Output
+-------------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, aad) AS STRING)|
+-------------------------------------------------------------------------+
|NULL |
+-------------------------------------------------------------------------+

Exemplo 3 : Descriptografar dados com key, modo e preenchimento

Python
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)
Output
+----------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, padding, ) AS STRING)|
+----------------------------------------------------------------------+
|Spark |
+----------------------------------------------------------------------+

Exemplo 4 : Descriptografar dados com key e modo

Python
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)
Output
+----------------------------------------------------------------------+
|CAST(try_aes_decrypt(unbase64(input), key, mode, DEFAULT, ) AS STRING)|
+----------------------------------------------------------------------+
|Spark |
+----------------------------------------------------------------------+

Exemplo 5 : Descriptografar dados com key

Python
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)
Output
+------------------------------------------------------------------+
|CAST(try_aes_decrypt(unhex(input), key, GCM, DEFAULT, ) AS STRING)|
+------------------------------------------------------------------+
|Spark |
+------------------------------------------------------------------+