Pular para o conteúdo principal

SHA512

Descrição

A função SHA512 converte uma string em um hash hexadecimal SHA-2 de 512 bits. É a opção mais robusta entre as funções de hash disponíveis no AMPscript, gerando uma saída de 128 caracteres hexadecimais. Útil quando você precisa criar identificadores únicos e irreversíveis a partir de dados de clientes, como e-mails ou CPFs, para integrações ou reconciliação de dados entre sistemas onde a segurança do hash é prioridade.

Sintaxe

SHA512(@stringToConvert)
SHA512(@stringToConvert, @charSet)

Parâmetros

ParâmetroTipoObrigatórioDescrição
stringToConvertstringSimA string que será convertida para o hash SHA-2 de 512 bits.
charSetstringNãoO conjunto de caracteres usado na codificação. O valor padrão é UTF-8, mas também aceita UTF-16.

Exemplo básico

Gerando um hash SHA-512 do e-mail de um cliente para usar como identificador único em integrações com plataformas de mídia:

%%[
SET @email = "joao.silva@gmail.com"
SET @hashEmail = SHA512(@email)
]%%

Hash do e-mail: %%=v(@hashEmail)=%%

Saída:

Hash do e-mail: 495a8104eef74ae73518705a8227555b596958343b4506860f1925a9cd7056e25473306a9d5ab841147d41cb7476dd965ab37f21bd379d625d42b40f18ef3356

Exemplo avançado

Criando um hash SHA-512 com codificação UTF-16 a partir do CPF do cliente, combinando com Lowercase e Trim para normalizar o dado antes de gerar o hash - cenário comum em réguas de relacionamento que precisam reconciliar dados com um DMP ou CDP:

%%[
SET @cpfOriginal = AttributeValue("CPF")
SET @emailOriginal = AttributeValue("EmailAddress")

/* Normaliza o e-mail antes de gerar o hash */
SET @emailNormalizado = Lowercase(Trim(@emailOriginal))

/* Hash SHA-512 padrão (UTF-8) para matching com plataforma de mídia */
SET @hashEmailUtf8 = SHA512(@emailNormalizado)

/* Hash SHA-512 com UTF-16 para integração com sistema legado do Banco Brasilão */
SET @hashEmailUtf16 = SHA512(@emailNormalizado, "UTF-16")

/* Hash do CPF para reconciliação de base */
SET @hashCpf = SHA512(@cpfOriginal)
]%%

<table>
<tr>
<td>Cliente: %%=v(@emailNormalizado)=%%</td>
</tr>
<tr>
<td>Hash UTF-8: %%=v(@hashEmailUtf8)=%%</td>
</tr>
<tr>
<td>Hash UTF-16: %%=v(@hashEmailUtf16)=%%</td>
</tr>
<tr>
<td>Hash CPF: %%=v(@hashCpf)=%%</td>
</tr>
</table>

Saída:

Cliente: joao.silva@gmail.com
Hash UTF-8: 495a8104eef74ae73518705a8227555b596958343b4506860f1925a9cd7056e25473306a9d5ab841147d41cb7476dd965ab37f21bd379d625d42b40f18ef3356
Hash UTF-16: 82fdb746ae8cc9a50b4da8e92706e41ef9d242a66c3d40a2a698124583f81769f35226679edbd2fa05c900a6c9ab8337b31f8fcc6f9f9cdfa56001899f758d8a
Hash CPF: [hash de 128 caracteres hexadecimais correspondente ao CPF]

Observações

⚠️ Atenção: O hash gerado com UTF-8 é diferente do gerado com UTF-16 para a mesma string de entrada. Se você está integrando com um sistema externo, confirme qual charset ele espera - caso contrário, os hashes não vão bater e a reconciliação vai falhar.

💡 Dica: Sempre normalize os dados antes de gerar o hash. Aplique Lowercase e Trim na string de entrada para garantir que "Joao@Email.com" e "joao@email.com" gerem o mesmo hash. Sem essa normalização, qualquer diferença de maiúscula, espaço ou formatação resulta em um hash completamente diferente.

💡 Dica: SHA-512 é um hash de mão única - não existe função para reverter o hash e recuperar o valor original. Se você precisa de criptografia reversível, considere usar EncryptSymmetric e DecryptSymmetric.

Funções relacionadas

  • SHA256 - hash SHA-2 de 256 bits, uma alternativa mais curta quando 512 bits não é requisito
  • SHA1 - hash SHA-1 de 160 bits
  • MD5 - hash MD5 de 128 bits
  • Base64Encode - codificação Base64 (não é hash, é reversível)
  • EncryptSymmetric - criptografia simétrica reversível para quando você precisa descriptografar depois