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.
- 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
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:
| 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.
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)
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)=>