HASHBYTES (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW) Endpoint di analisi SQL in Microsoft Fabric Warehouse in Microsoft Fabric

Restituisce l'hash MD2, MD4, MD5, SHA1 o SHA2 del relativo input in SQL Server.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

HASHBYTES ( '<algorithm>', { @input | 'input' } )  
  
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512   

Argomenti

<algorithm>
Identifica l'algoritmo di hash da utilizzare per eseguire l'hashing dell'input. Si tratta di un argomento obbligatorio in assenza di impostazioni predefinite. Le virgolette singole sono obbligatorie. A partire da SQL Server 2016 (13.x), tutti gli algoritmi diversi da SHA2_256 e SHA2_512 sono deprecati.

@input
Specifica una variabile contenente i dati di cui eseguire l'hashing. @input è di tipo varchar, nvarchar o varbinary.

'input'
Specifica un'espressione che restituisce un carattere o una stringa binaria di cui eseguire l'hashing.

L'output è conforme allo standard dell'algoritmo, ovvero 128 bit (16 byte) per MD2, MD4 e MD5 e 160 bit (20 byte) per SHA e SHA1; 256 bit (32 byte) per SHA2_256 e 512 bit (64 byte) per SHA2_512.

Si applica a: SQL Server 2012 (11.x) e versioni successive

Per SQL Server 2014 (12.x) e versioni precedenti, la dimensione dei valori di input consentiti è limitata a 8000 byte.

Valore restituito

varbinary (non più di 8000 byte)

Osservazioni:

È consigliabile usare CHECKSUM o BINARY_CHECKSUM come alternative per calcolare un valore hash.

Gli algoritmi MD2, MD4, MD5, SHA e SHA1 sono deprecati a partire da SQL Server 2016 (13.x). Usare invece SHA2_256 o SHA2_512. Gli algoritmi precedenti continueranno a funzionare, ma genereranno un evento Deprecation.

Esempi

Restituire l'hash di una variabile

Nell'esempio seguente viene restituito l'hash SHA2_256 dei dati nvarchar archiviati nella variabile @HashThis.

DECLARE @HashThis NVARCHAR(32);  
SET @HashThis = CONVERT(NVARCHAR(32),'dslfdkjLK85kldhnv$n000#knf');  
SELECT HASHBYTES('SHA2_256', @HashThis);  

Restituire l'hash di una colonna di tabella

Nell'esempio seguente viene restituito l'hash SHA2_256 dei valori della colonna c1 nella tabella Test1.

CREATE TABLE dbo.Test1 (c1 NVARCHAR(32));  
INSERT dbo.Test1 VALUES ('This is a test.');  
INSERT dbo.Test1 VALUES ('This is test 2.');  
SELECT HASHBYTES('SHA2_256', c1) FROM dbo.Test1;  

Il set di risultati è il seguente.

-------------------------------------------  
0x741238C01D9DB821CF171BF61D72260B998F7C7881D90091099945E0B9E0C2E3 
0x91DDCC41B761ACA928C62F7B0DA61DC763255E8247E0BD8DCE6B22205197154D  
(2 row(s) affected)  

Vedi anche

Scegliere un algoritmo di crittografiaCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)