As funções SHA256 e SHA512 retornam hash incorreto

Última atualização em 2024-01-30

Saiba como a codificação do banco de dados afeta os valores de hash no Adobe. Explore a solução para as discrepâncias de função SHA256 e SHA512.

Descrição

Ambiente

  • Campaign
  • Campaign Classic

Problema/Sintomas

O cliente relatou que as funções SHA256 e SHA512 retornam um hash incorreto.

O link abaixo mostra que outros usuários também colocaram o mesmo problema:

https://experienceleaguecommunities.adobe.com/t5/adobe-campaign-classic-questions/sha256-and-sha512-function-returns-wrong-hash/td-p/351035

Resolução

Um cliente compartilhou uma solução:

O problema ocorreu porque o Adobe converte o tipo de dados da cadeia de caracteres em nvarchar em vez de varchar no caso quando o DB está usando codificação Unicode. No caso do cliente, a codificação padrão do banco de dados é usada como Unicode para oferecer suporte ao Tailandês idioma. Portanto, o Adobe converteu a cadeia de caracteres em nvarchar.

Para as funções SHA256 e SHA512, funciona normalmente, mas retornará valores diferentes de hash para varchar e nvarchar.

No caso do cliente, foi possível alterar esse campo (contendo apenas um número de celular) para varchar e coloque-o com hash corretamente.

Artigo da comunidade Adobe:
https://experienceleaguecommunities.adobe.com/t5/adobe-campaign-classic-questions/sha256-and-sha512-functions-returning-wrong-hash/qaq-p/351034

Além disso, se o SQL Server for usado, a função digest usará o UTF-16 representação da string. Você não obterá o resumo esperado (que geralmente é calculado em ASCII ou UTF-8 caractere).

Exemplo: olá resultará em 14cde7c9ad35de5a37fce2ac276742175028fd9f7cdf0dae01ff508b126429d9 as SHA-256 no ASCII/UTF-8 representação da string e dará 18fe2820b38427a08a5b49fb4d71a7027799bfe0050d3050ca4d3491a85aa0eb na UTF-16 representação.

Nesta página