Función HASH( )

Devuelve un valor aleatorio añadido hash criptográfico basado en el valor de entrada.

Sintaxis

HASH(campo <;valor_aleatorio>)

Parámetros

Nombre Tipo Descripción
campo

carácter

numérico

fechahora

lógico

El valor al que se desea aplicar el código hash.

valor_aleatorio

opcional

carácter

numérico

El valor aleatorio añadido para utilizar. Puede especificar un número identificador de PASSWORD del 1 al 10 o una cadena de caracteres.

Si se omite, se utiliza el valor aleatorio predeterminado de Analytics.

El valor aleatorio se limita a 128 caracteres y se trunca automáticamente en 128 caracteres si usted especifica un valor más extenso.

Si desea obtener más información, consulte El valor aleatorio añadido.

Salida

Carácter.

Ejemplos

Ejemplos básicos

Con el valor aleatorio predeterminado de Analytics

Devuelve "819A974BB91215D58E7753FD5A42226150100A0763087CA7DECD93F3C3090405":

HASH("555-44-3322")

Devuelve el valor hash de cada número del campo Núm_tarjeta_de_crédito:

HASH(Núm_tarjeta_de_crédito)

Con un valor aleatorio especificado por el usuario

Devuelve "AD1E7D9B97B6F6B5345AB13471A74C31EBE6630CA2622BB7E8C280E9FBEE1F17":

HASH("555-44-3322"; "mi valor aleatorio 123")

Ejemplos avanzados

Asegurarse de que los valores hash sean idénticos

Use otras funciones en combinación con HASH( ) para estandarizar los valores de texto claro que deberían generar valores hash idénticos.

Considere los siguientes conjuntos de ejemplos. Tenga en cuenta la manera en la que el uso de mayúsculas o minúsculas en los valores de texto claro modifica completamente el valor hash de salida en los primeros dos ejemplos.

Devuelve "DF6789E1EC65055CD9CA17DD5B0BEA5892504DFE7661D258737AF7CB9DC46462":

HASH("John Smith")

Devuelve "3E12EABB5940B7A2AD90A6B0710237B935FAB68E629907927A65B3AA7BE6781D":

HASH("JOHN SMITH")

Por medio del uso de la función UPPER( ) para estandarizar el uso de mayúsculas y minúsculas, se obtienen resultados de valor hash idénticos.

Devuelve "3E12EABB5940B7A2AD90A6B0710237B935FAB68E629907927A65B3AA7BE6781D":

HASH(UPPER("John Smith"))

Uso de HASH( ) para comparar bloques de texto extensos

Utilice HASH( ) para probar si los bloques de texto de dos campos de comentario son idénticos.

Para realizar esta prueba, cree dos campos calculados similares a los que se muestran a continuación y después cree un filtro para encontrar los bloques de texto que no sean idénticos.

DEFINE FIELD Hash_1 COMPUTED HASH(Campo_de_comentario_1)
DEFINE FIELD Hash_2 COMPUTED HASH(Campo_de_comentario_2)
SET FILTER TO Hash_1 <> Hash_2

Si los campos de comentario están en tablas independientes, cree un campo calculado HASH( ) en cada tabla y, a continuación, utilice los campos calculados como campo clave común para realizar una unión sin coincidencias de las dos tablas. Los registros de la tabla de salida unida representan bloques de texto que no son idénticos.

Observaciones

Cuándo usar HASH( )

Utilice la función HASH( ) para proteger datos sensibles, como números de tarjetas de crédito, información sobre salarios o números de seguridad social.

Cómo funciona

HASH( ) proporciona codificación en una sola dirección. Los datos en texto claro se pueden utilizar para producir un valor de código hash; sin embargo, el valor de código hash no se puede decodificar ni desencriptar posteriormente.

Un valor de texto claro específico genera siempre el mismo valor de código hash; por lo tanto, usted puede buscar un campo de números de tarjetas de crédito con el código hash para detectar duplicados o unir dos campos de números de tarjetas de crédito con el código hash, y los resultados serán los mismos que si hubiese realizado la operación en los campos de datos claros equivalentes.

Protección de datos sensibles

Para evitar almacenar datos sensibles en un servidor, puede crear un campo calculado de manera local con la función HASH( ) y, a continuación, crear una nueva tabla extrayendo el campo con el código hash y cualquier otro campo necesario, mientras excluye el campo con el texto claro. Puede utilizar la nueva tabla del servidor para sus análisis y, una vez que tiene los resultados, consultar la tabla original si es que necesita ver la versión de texto clara de alguno de los datos con el código hash.

Si está prohibido el almacenamiento de datos sensibles en forma local después de su uso inicial, puede eliminar la tabla original después de crear la nueva tabla con los valores con el código hash y consultar el sistema de origen inicial para ver los valores de texto claro.

Los valores de texto claro deben ser absolutamente idénticos

Para obtener valores de código hash idénticos, dos valores de texto claro deben ser exactamente iguales. Por ejemplo, se obtienen valores de código hash diferentes con el mismo número de tarjeta de crédito con o sin guiones o el mismo nombre en mayúsculas y minúsculas o únicamente en mayúscula.

Es posible que deba incorporar funciones como INCLUDE( ), EXCLUDE( ) o UPPER( ) en la función HASH( ) para estandarizar los valores de texto claro.

Los espacios en blanco al principio y al final se recortan automáticamente con la función HASH( ); por lo tanto, no es necesario utilizar las funciones TRIM( ) o ALLTRIM( ).

¿Qué ocurre si los espacios en blanco al principio o al final son significativos?

Si tiene datos en los que los espacios en blanco al principio o al final representan diferencias significativas entre los valores, debe reemplazar los espacios en blanco por otro carácter antes de colocar el valor hash en los valores.

Antes de aplicar el código hash, reemplaza los espacios en blanco por un guion bajo (_) en los valores de los campos:

HASH(REPLACE(nombre_campo; " "; "_"))

El algoritmo criptográfico utilizado por HASH( )

HASH( ) utiliza el algoritmo de codificación criptográfica hash SHA-2 que genera una salida de longitud fija de 64 bytes, sin importar cuál sea la longitud del valor de entrada. El valor de entrada del texto claro puede tener más de 64 bytes.

El valor aleatorio añadido

Cómo funciona

La protección que ofrece la función HASH( ) se ve fortalecida por el agregado automático de un valor aleatorio antes del proceso de cifrado hash. El valor aleatorio añadido es una cadena alfanumérica que se concatena con el valor de datos de origen. Después, se utiliza la cadena concatenada completa para generar el valor aleatorio hashed. Con este enfoque, los valores hashed son más resistentes a las técnicas de decodificación.

Especificación opcional de su propio valor aleatorio

Automáticamente se utiliza un valor aleatorio añadido predeterminado y fijo, a menos que usted especifique un valor aleatorio. Puede utilizar cualquiera de los siguientes métodos para especificar un valor aleatorio:

  • Valor aleatorio como cadena de texto claro

    Especifique una cadena alfanumérica. Por ejemplo:

    HASH(Núm_tarjeta_crédito; "mi valor aleatorio")
  • Valor aleatorio como contraseña

    Utilice el comando PASSWORD junto con la función HASH( ) y especifique un número identificador de PASSWORD de 1 a 10. Por ejemplo:

    PASSWORD 3 "Introducir un valor aleatorio"
    EXTRACT FIELDS HASH(Núm_tarjeta_crédito; 3) TO "Tabla_protegida"

    Nota

    El valor aleatorio de  PASSWORD se debe introducir antes de poder extraer el campo de la función HASH( ).

    La ventaja de utilizar un número identificador de PASSWORD con HASH( ) es que no necesita exponer un valor aleatorio en texto claro.

    Si desea obtener más información, consulte Comando PASSWORD.

Pautas del método de contraseña

El método de contraseña está diseñado para ser utilizado en scripts que solicitan la contraseña al comienzo del script o antes de que aparezca la función HASH( ) en el script.

El método de contraseña no es adecuado para utilizarlo en campos calculados porque las asignaciones de PASSWORD se eliminan al cerrar Analytics.

Además, los campos calculados que utilizan valores aleatorios basados en contraseñas se eliminan automáticamente de las vistas al volver a abrir Analytics. Esta eliminación es necesaria para evitar que se vuelvan a calcular los valores hash utilizando el valor aleatorio predeterminado. Los valores calculados nuevamente serían diferentes de los valores hash originales con el valor aleatorio proporcionado por el usuario.

Guía de creación de scripts de ACL 14.1