Pular para o conteúdo principal

EncryptSymmetric

Descrição

Criptografa uma string de texto plano usando o algoritmo simétrico especificado (AES, DES ou Triple DES), junto com senha, salt e vetor de inicialização (IV). É a função essencial quando você precisa proteger dados sensíveis de clientes - como CPF, número de cartão ou qualquer informação pessoal - antes de armazená-los em Data Extensions ou passá-los via parâmetros em URLs de CloudPages. Retorna a string criptografada, que posteriormente pode ser revertida com DecryptSymmetric.

Sintaxe

EncryptSymmetric(@data, "algoritmo", @passwordExternalKey, @passwordValue, @saltExternalKey, @saltValue, @ivExternalKey, @ivValue)

Parâmetros

ParâmetroTipoObrigatórioDescrição
datastringSimA string de texto plano que será criptografada.
encryptionAlgorithmstringSimO algoritmo de criptografia. Opções: aes, des, tripledes. Para DES e Triple DES, você pode especificar modo de operação e padding (ex: tripledes;mode=cfb;padding=ansix923).
passwordExternalKeystringSimA external key de uma senha criada no Key Management. Use uma variável não declarada (ex: @null) se for informar o valor diretamente.
passwordValuestringSimO valor da senha. Use uma variável não declarada (ex: @null) se estiver usando a external key.
saltExternalKeystringSimA external key de um salt no Key Management. Use uma variável não declarada (ex: @null) se for informar o valor diretamente.
saltValuestringSimO valor do salt, representado como uma string hexadecimal de 8 bytes. Use uma variável não declarada (ex: @null) se estiver usando a external key.
ivExternalKeystringSimA external key de um vetor de inicialização no Key Management. Use uma variável não declarada (ex: @null) se for informar o valor diretamente.
ivValuestringSimO vetor de inicialização, representado como uma string hexadecimal de 16 bytes. Use uma variável não declarada (ex: @null) se estiver usando a external key.

Algoritmos disponíveis

AlgoritmoDescriçãoSegurança
aesAES (Advanced Encryption Standard)Mais seguro
tripledesTriple DES (aplica o DES três vezes em cada bloco)Intermediário
desDES (Data Encryption Standard)Menos seguro

Modos de operação (DES e Triple DES)

Especifique após o algoritmo com ;mode=:

ModoDescrição
cbcCipher Block Chaining (padrão)
cfbCipher Feedback
ctsCiphertext Stealing
ecbElectronic Codebook
ofbOutput Feedback

Métodos de padding (DES e Triple DES)

Especifique após o modo com ;padding=:

PaddingDescrição
pkcs7PKCS#7/RFC 5652 (padrão)
ansix923ANSI X9.23
iso10126ISO 10126
zerosBytes preenchidos com zeros
noneSem padding

Exemplo básico

Criptografando o CPF de um cliente do Banco Brasilão usando AES com valores fornecidos diretamente.

%%[

VAR @cpf, @encData
SET @cpf = "123.456.789-00"

SET @encData = EncryptSymmetric(@cpf, "aes", @null, "S3nh4M3r1d10n4l!", @null, "0000000000000000", @null, "00000000000000000000000000000000")

]%%

CPF criptografado: %%=V(@encData)=%%

Saída:

CPF criptografado: [string criptografada]

Exemplo avançado

Cenário real: em um e-mail da FarmaRede, você precisa gerar um link para CloudPage que carregue dados sensíveis do cliente de forma segura. Aqui criptografamos o e-mail do cliente com Triple DES usando Cipher Feedback e padding ANSI X9.23, e então codificamos em Base64 para transporte seguro via URL.

%%[

VAR @email, @encData, @encBase64, @linkSeguro

SET @email = "[email protected]"

/* Criptografa com Triple DES, modo CFB, padding ANSI X9.23 */
SET @encData = EncryptSymmetric(
@email,
"tripledes;mode=cfb;padding=ansix923",
@null,
"F4rm4R3d3S3cur3!",
@null,
"0102030405060708",
@null,
"01020304050607080910111213141516"
)

/* Codifica em Base64 para poder usar em URL */
SET @encBase64 = Base64Encode(@encData)

SET @linkSeguro = Concat("https://cloud.farmarede.com.br/minha-conta?token=", URLEncode(@encBase64))

]%%

<a href="%%=RedirectTo(@linkSeguro)=%%">Acessar minha conta FarmaRede</a>

Saída:

<a href="https://cloud.farmarede.com.br/minha-conta?token=[string criptografada em Base64 e URL-encoded]">Acessar minha conta FarmaRede</a>

Observações

⚠️ Atenção: Os valores de Salt e IV são tratados como strings hexadecimais, onde cada par de caracteres representa um byte. O Salt deve ter 8 bytes (16 caracteres hex) e o IV deve ter 16 bytes (32 caracteres hex). Não tente usar esses valores como strings de cifra - você não conseguirá descriptografar corretamente depois.

⚠️ Atenção: As funções EncryptSymmetric e DecryptSymmetric funcionam exclusivamente com dados dentro do Marketing Cloud. Não é possível usá-las com funcionalidades de criptografia/descriptografia de terceiros.

💡 Dica: Quando for informar valores diretamente (em vez de usar external keys do Key Management), passe uma variável não declarada (como @null) no parâmetro de external key correspondente. Isso indica à função que ela deve usar o valor fornecido no parâmetro seguinte.

💡 Dica: Para visualizar ou transportar a string criptografada com segurança, envolva o resultado em Base64Encode. Na hora de descriptografar, use Base64Decode antes de chamar DecryptSymmetric.

💡 Dica: Se você não passar ou referenciar um vetor de inicialização (IV), a função usará o valor da senha como IV. Mesmo assim, é altamente recomendável sempre definir um IV explícito para maior segurança.

💡 Dica: Se você já criou chaves na seção Key Management da interface do Marketing Cloud, pode referenciar as external keys diretamente nos parâmetros, sem precisar expor valores sensíveis no código. Essa é a abordagem mais segura para ambientes de produção.

💡 Dica: Entre os algoritmos disponíveis, prefira AES - é o mais seguro. Use Triple DES ou DES apenas quando houver necessidade de compatibilidade com sistemas legados.

Funções relacionadas

  • DecryptSymmetric - descriptografa dados criptografados com EncryptSymmetric
  • Base64Encode - codifica a string criptografada em Base64 para visualização e transporte
  • Base64Decode - decodifica Base64 antes de descriptografar
  • MD5 - gera hash MD5 (criptografia unidirecional)
  • SHA256 - gera hash SHA-256 (criptografia unidirecional)
  • SHA512 - gera hash SHA-512 (criptografia unidirecional)
  • URLEncode - codifica strings para uso seguro em URLs
  • RedirectTo - redireciona para URLs construídas dinamicamente
  • CloudPagesURL - gera URLs de CloudPages com parâmetros criptografados