función hash()

La función hash() devuelve un hash de 128 bits, 160 bits o 256 bits de los datos de entrada, en función del algoritmo que se seleccione.

Esta función proporciona dos valores de retorno distintos entre 2128 y 2256, y está pensada a efectos de cifrado. La función casi nunca produce la misma salida para dos entradas diferentes.

Antes de utilizar la función hash(), preste atención a los siguientes comportamientos:
  • La función hash() es, por lo general, mucho más lenta que la función hash4() o hash8() a la hora de realizar cálculos. Asimismo, la función hash() devuelve un valor varchar binario de 16 a 32 bytes; la comparación de los valores varchar binarios lleva más tiempo que comparar los valores enteros y, por lo tanto, aumenta el tiempo de ejecución de las consultas. Si necesita velocidad en la generación de hash y en la comparación, o si lo único que se necesita es una función de búsqueda simple en una dirección, utilice la función hash4() o hash8() en lugar de la función hash().
  • Las columnas con valores hash de la función ' hash() ' no pueden asignarse a zonas y no utilizan otras técnicas de rendimiento de consulta Netezza Performance Server.

Sintaxis

La función hash() tiene la siguiente sintaxis:
varchar = hash(varchar data [, int algorithm]);
nvarchar = hash(nvarchar data [, int algorithm]);

El valor data especifica el varchar o nvarchar al que aplicar la operación hash.

El valor ' algorithm ' es un código entero, que por defecto es 0. Los algoritmos disponibles y los tamaños de los valores hash resultantes se muestran en la siguiente tabla:

Tabla 1. Algoritmos admitidos para el cálculo de los hash criptográficos
Código Descripción Resultado
0 MD5 hash de 128 bits
1 SHA-1 hash de 160 bits
2 SHA-2 hash de 256 bits

Tanto el algoritmo MD5 y el Secure Hash Algorithm (SHA) son algoritmos que procesan mensajes que provienen de MD4. Las funciones hash SHA son el resultado del trabajo de la National Security Agency (NSA) para suministrar potentes funciones de hash criptográficas.

Importante: Para procesar valores nvarchar, debe utilizar la función ' hash_nvarchar() ' en lugar de la función ' hash() '. La función hash_nvarchar() devuelve un valor varchar para los datos nvarchar de entrada. La función hash() se conserva para ofrecer compatibilidad con las versiones y resultados anteriores, pero las tablas y las vistas que almacenan los valores de función hash('NVARCHAR') podrían encontrar problemas durante las cargas y las operaciones GENERATE STATISTICS.

Devuelve

La función devuelve los datos tras la operación hash. El tipo de devolución es un valor varchar binario de 16 a 32 bytes.

Ejemplo

select hash('Netezza',0);
       HASH
------------------
Ã
®dïO=±NEÂ
ÂÂÃ
(1 row)
IMPORTANTE:
Debe utilizar RAWTOHEX para obtener el valor hash real en formato de texto.
SYSTEM.ADMIN(ADMIN)=> select rawtohex (hash('Netezza',0));
RAWTOHEX

----------------------------------

C5AE64EF4F3D9EB14E4503857F868EC3

(1 row)

SYSTEM.ADMIN(ADMIN)=>