funzione hash()

La funzione 'hash() restituisce un hash a 128, 160 o 256 bit dei dati di ingresso, a seconda dell'algoritmo selezionato.

Questa funzione fornisce2128-2256 valori di ritorno distinti ed è destinata a scopi crittografici. La funzione non produce quasi mai lo stesso risultato per due ingressi diversi.

Prima di utilizzare la funzione " hash(), è necessario tenere presente i seguenti comportamenti:
  • La funzione 'hash() è generalmente molto più lenta della funzione 'hash4() o 'hash8() nell'eseguire i calcoli. Inoltre, la funzione 'hash() restituisce un valore varchar binario di 16 - 32 byte; il confronto dei valori varchar binari richiede più tempo del confronto dei valori interi e quindi aumenta i tempi di esecuzione delle query. Se si ha bisogno di velocità nella generazione e nel confronto degli hash o se si ha bisogno solo di una semplice funzione di ricerca unidirezionale, utilizzare la funzione 'hash4() o 'hash8() invece della funzione 'hash().
  • Le colonne con valori hash della funzione 'hash() non possono essere mappate per zona e non utilizzano altre tecniche di performance delle query di Netezza Performance Server.

Sintassi

La funzione " hash() ha la seguente sintassi:
varchar = hash(varchar data [, int algorithm]);
nvarchar = hash(nvarchar data [, int algorithm]);

Il valore 'data specifica il valore varchar o nvarchar da sottoporre a hash.

Il valore 'algorithm è un codice intero, che per impostazione predefinita è 0. La tabella seguente mostra gli algoritmi disponibili e le dimensioni dei valori hash risultanti:

Tabella 1. Algoritmi supportati per l'hashing crittografico
Codice Descrizione Risultato
0 MD5 hash a 128 bit
1 SHA-1 hash a 160 bit
2 SHA-2 hash a 256 bit

L'algoritmo MD5 e il Secure Hash Algorithm (SHA) sono algoritmi di digestione dei messaggi derivati dall'MD4. Le funzioni di hash SHA sono il risultato di uno sforzo della National Security Agency (NSA) per fornire forti capacità di hashing crittografico.

Importante: per elaborare i valori nvarchar, si deve usare la funzione 'hash_nvarchar() invece della funzione 'hash(). La funzione 'hash_nvarchar() restituisce un valore varchar per i dati nvarchar inseriti. La funzione 'hash() rimane per compatibilità con le versioni e i risultati precedenti, ma le tabelle e le viste che memorizzano i valori della funzione 'hash('NVARCHAR') potrebbero incontrare problemi durante i caricamenti e le operazioni di GENERAZIONE DI STATISTICHE.

Risultati

La funzione restituisce i dati con hash. Il tipo di ritorno è un valore varchar binario di 16-32 byte.

Esempio

select hash('Netezza',0);
       HASH
------------------
Ã
®dïO=±NEÂ
ÂÂÃ
(1 row)
Importante:
È necessario utilizzare RAWTOHEX per ottenere il valore effettivo dell'hash in formato testo.
SYSTEM.ADMIN(ADMIN)=> select rawtohex (hash('Netezza',0));
RAWTOHEX

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

C5AE64EF4F3D9EB14E4503857F868EC3

(1 row)

SYSTEM.ADMIN(ADMIN)=>