Pular para o conteúdo principal

aes_encrypt

Retorna um valor criptografado de input usando AES em dado mode com o padding especificado. 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 vetores de inicialização (IVs) opcionais são suportados apenas nos modos CBC e GCM. Esses valores devem ser de 16 bytes para CBC e 12 bytes para GCM. Caso não seja fornecido, um vetor aleatório será gerado e adicionado ao início da saída. 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.aes_encrypt(input, key, mode=None, padding=None, iv=None, aad=None)

Parâmetros

Parâmetro

Tipo

Descrição

input

pyspark.sql.Column ou str

O valor binário a ser criptografado.

key

pyspark.sql.Column ou str

A senha a ser usada para criptografar os dados.

mode

pyspark.sql.Column ou str, opcional

Especifica qual modo de cifra de bloco deve ser usado para criptografar 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.

iv

pyspark.sql.Column ou str, opcional

Vetor de inicialização opcional. Compatível apenas com os modos CBC e GCM. Valores válidos: Nenhum ou "". Matriz de 16 bytes para o modo CBC. Matriz de 12 bytes para o modo GCM.

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 criptografado.

Exemplos

Exemplo 1 : Criptografar dados com key, modo, preenchimento, IV e AAD.

Python
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)
Output
+-----------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), aad))|
+-----------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4 |
+-----------------------------------------------------------------------+

Exemplo 2 : Criptografar dados com key, modo, preenchimento e IV.

Python
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)
Output
+--------------------------------------------------------------------+
|base64(aes_encrypt(input, key, mode, padding, to_binary(iv, hex), ))|
+--------------------------------------------------------------------+
|AAAAAAAAAAAAAAAAQiYi+sRNYDAOTjdSEcYBFsAWPL1f |
+--------------------------------------------------------------------+

Exemplo 3 : Criptografar dados com key, modo e preenchimento

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

Exemplo 4 : Criptografar dados com key e modo

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

Exemplo 5 : Criptografar dados com key

Python
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)
Output
+-------------------------------------------------------------------------------------------------------------+
|CAST(aes_decrypt(unbase64(base64(aes_encrypt(input, key, GCM, DEFAULT, , ))), key, GCM, DEFAULT, ) AS STRING)|
+-------------------------------------------------------------------------------------------------------------+
|Spark SQL |
+-------------------------------------------------------------------------------------------------------------+