HASHBYTES (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar MD2, MD4, MD5, SHA, SHA1 eller SHA2-hashen av sin indata i SQL Server.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

<algorithm>
Identifierar hashalgoritmen som ska användas för att hasha indatan. Detta är ett obligatoriskt argument utan standard. Citattecken är obligatoriska. Från och med SQL Server 2016 (13.x) är alla algoritmer utom SHA2_256 och SHA2_512 föråldrade.

@input
Specificerar en variabel som innehåller datan som ska hashas. @input är varchar, nvarchar eller varbinär.

'input'
Specificerar ett uttryck som utvärderar till ett tecken eller en binär sträng som ska hashas.

Utdatan följer algoritmstandarden: 128 bitar (16 byte) för MD2, MD4 och MD5; 160 bitar (20 byte) för SHA och SHA1; 256 bitar (32 byte) för SHA2_256 och 512 bitar (64 byte) för SHA2_512.

Gäller för: SQL Server 2012 (11.x) och senare

För SQL Server 2014 (12.x) och tidigare är tillåtna indatavärden begränsade till 8000 byte.

Returvärde

varbinary (maximalt 8000 byte)

Anmärkningar

Överväg att använda CHECKSUM or BINARY_CHECKSUM som alternativ för att beräkna ett hashvärde.

MD2, MD4, MD5, SHA och SHA1-algoritmerna är föråldrade från och med SQL Server 2016 (13.x). Använd SHA2_256 eller SHA2_512 i stället. Äldre algoritmer fortsätter att fungera, men de kommer att skapa en avskrivningshändelse.

Examples

Returnera hashen för en variabel

Följande exempel returnerar hashen SHA2_256 av nvarchar-data lagrad i variabeln @HashThis.

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

Returnera hashen för en tabellkolumn

Följande exempel returnerar SHA2_256 hashen av värdena i kolumnen c1 i tabellen 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;  

Här är resultatet.

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

Se även

Välj en krypteringsalgoritmCHECKSUM_AGG (Transact-SQL)KONTROLLSUMMA (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)