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
HASHBYTES ( '<algorithm>', { @input | 'input' } )
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
<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.
varbinary (non più di 8000 byte)
È 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.
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);
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)
Scegliere un algoritmo di crittografiaCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)