Retorna um hash criptográfico originado baseado no valor de entrada.
Sintaxe
HASH(campo <;valor_de_origem>)
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
campo |
caractere numérico datahora lógico |
O valor a transformar em hash. |
valor_de_origem
opcional |
caractere numérico |
O valor de origem a ser usado. Você pode especificar um número identificador de PASSWORD de 1 a 10 ou uma cadeia de caracteres. Se omitido, o valor de origem padrão do Analytics será aplicado. O valor de origem é limitado a 128 caracteres, e é truncado automaticamente em 128 caracteres se um valor mais longo for especificado. Para obter mais informações, consulte O valor de origem. |
Saída
Caractere.
Exemplos
Exemplos básicos
Com o valor de origem padrão do Analytics
Retorna "819A974BB91215D58E7753FD5A42226150100A0763087CA7DECD93F3C3090405":
HASH("555-44-3322")
Retorna o valor de hash para cada número no campo Número_cartão_crédito:
HASH(Número_cartão_crédito)
Com um valor de origem especificado pelo usuário
Retorna "AD1E7D9B97B6F6B5345AB13471A74C31EBE6630CA2622BB7E8C280E9FBEE1F17":
HASH("555-44-3322"; "meu valor de origem 123")
Exemplos avançados
Garantia de que os valores de hash são idênticos
Use outras funções junto com HASH( ) para padronizar valores de texto não criptografado que devem produzir valores de hash idênticos.
Considere o seguinte conjunto de exemplos. Note como o uso de maiúsculas/minúsculas dos valores de texto não criptografado altera completamente o valor de hash de saída nos primeiros dois exemplos.
Retorna "DF6789E1EC65055CD9CA17DD5B0BEA5892504DFE7661D258737AF7CB9DC46462":
HASH("John Smith")
Retorna "3E12EABB5940B7A2AD90A6B0710237B935FAB68E629907927A65B3AA7BE6781D":
HASH("JOHN SMITH")
Usando a função UPPER( ) para padronizar o uso de maiúsculas/minúsculas, o resultado é um valor de hash idêntico.
Retorna "3E12EABB5940B7A2AD90A6B0710237B935FAB68E629907927A65B3AA7BE6781D":
HASH(UPPER("John Smith"))
Uso de HASH( ) para comparar grandes blocos de texto
Use HASH( ) para testar se os blocos de texto em dois campos de comentário são idênticos.
Para realizar esse teste, crie dois campos calculados similares aos exibidos abaixo e crie um filtro para encontrar os blocos de texto não idênticos.
DEFINE FIELD Hash_1 COMPUTED HASH(Campo_Comentario_1)
DEFINE FIELD Hash_2 COMPUTED HASH(Campo_Comentario_2)
SET FILTER TO Hash_1 <> Hash_2
Se os campos de comentário estiverem em tabelas separadas, crie um campo calculado HASH( ) em cada tabela e use esses campos como um campo-chave comum para uma associação não correspondida de duas tabelas. Os registros da tabela de saída reunida representam os blocos de texto não idênticos.
Observações
Quando usar HASH( )
Use a função HASH( ) para proteger dados delicados como números de cartão de crédito, informações de salários ou números de seguro social.
Como funciona?
HASH( ) oferece codificação unidirecional. Os dados em texto não criptografado podem ser usados para produzir valores em hash, porém o valor em hash não pode ser subsequentemente descodificado ou descriptografado.
Um mesmo valor de texto não criptografado sempre produz o mesmo valor de hash, portanto é possível pesquisar um campo de números de cartão de crédito em hash por duplicações ou reunir dois campos de números de cartão de crédito codificados em hash e os resultados serão os mesmos que se a operação fosse executada nos campos de texto não criptografado equivalentes.
Limpeza de dados confidenciais
Para evitar armazenar dados delicados em um servidor, pode-se criar um campo calculado localmente usando a função HASH( ) e, então, criar uma nova tabela extraindo o campo em hash e outros campos exigidos enquanto o campo de texto não criptografado é excluído. A nova tabela pode ser usada no servidor para a análise e, com os resultados, a tabela original pode ser referenciada novamente se for necessário visualizar a versão em texto não criptografado dos dados em hash.
Se o armazenamento local de dados delicados após o uso for proibido, é possível excluir a tabela original após a nova tabela ser criada com os valores de hash e referenciar os valores de texto não criptografado no sistema de origem original.
Valores de texto não criptografado devem ser exatamente idênticos
Para produzir valores de hash idênticos, dois campos texto não criptografado devem ser exatamente idênticos. Valores diferentes de hash, por exemplo, resultam no mesmo número de cartão de crédito com ou sem hifens ou no mesmo nome com caixa de título ou em maiúsculas.
Pode ser preciso incorporar funções como INCLUDE( ), EXCLUDE( ) ou UPPER( ) na função HASH( ) para padronizar os valores de texto não criptografado.
Os brancos à esquerda e à direita são eliminados automaticamente pela função HASH( ), portanto, não é necessário usar as funções TRIM( ) ou ALLTRIM( ).
E se os brancos à esquerda ou à direita forem significativos?
Caso existam dados em que os brancos à esquerda ou à direita representem diferenças significativas entre os valores, será necessário substituir os brancos por outro caractere antes do hashing dos valores.
Substitui brancos nos valores do campo pelo caractere sublinhado (_) antes do hashing:
HASH(REPLACE(nome_campo; " "; "_"))
O algoritmo criptográfico usado por HASH( )
HASH( ) utiliza um algoritmo de hash criptográfico SHA-2 que produz saída em hash de comprimento fixo de 64 bytes, independente do tamanho do valor de entrada. O valor de texto não criptografado de entrada pode ser mais longo que 64 bytes.
O valor de origem
Como funciona?
A proteção oferecida pela função HASH( ) é fortalecida pela adição automática de um valor de origem antes do hashing. O valor de origem é uma cadeia alfanumérica, concatenada ao valor dos dados de origem. A cadeia concatenada inteira é então usada para produzir o valor originado em hash. Essa abordagem torna os valores em hash mais resistentes a técnicas de decodificação.
Opcionalmente, especifique seu próprio valor de origem
Um valor de origem fixo padrão é usado automaticamente, a menos que você especifique um valor de origem. Os dois métodos a seguir podem ser usados para especificar um valor de origem:
-
O valor de origem como cadeia de texto não criptografado
Especifique uma cadeia alfanumérica, por exemplo. Por exemplo:
HASH(Núm_cartão_credito; "meu valor de origem")
-
Valor de origem como senha
Use o comando PASSWORD juntamente com a função HASH( ) e especificar um número identificador PASSWORD de 1 a 10 como. Por exemplo:
PASSWORD 3 "Insira um valor de origem"
EXTRACT FIELDS HASH(Núm_cartão_crédito; 3) TO "Tabela_protegida"Nota
O valor de origem PASSWORD deve ser inserido antes de o campo na função HASH( ) poder ser exportada.
A vantagem do uso de um identificador de PASSWORD com HASH( ) é que não é necessário expor um valor de origem em texto não criptografado.
Para obter mais informações, consulte Comando PASSWORD.
Diretrizes de método de senha
O método de senha é destinado a uso em scripts que solicitam a senha no início do script, ou antes que a função HASH( ) apareça no script.
O método de senha não é adequado para uso em campos calculados, porque as atribuições de PASSWORD são excluídas ao fechar o Analytics.
Além disso, campos calculados que usam um valor de origem com base em senha são removidos automaticamente das exibições ao reabrir o Analytics. Essa remoção é necessária para evitar o novo cálculo de valores de hash usando o valor de origem padrão. Os valores recalculados seriam diferentes dos valores de hash originais calculados com um valor de origem fornecido pelo usuário.