Delen via


HASHBYTES (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Geeft de MD2, MD4, MD5, SHA, SHA1 of SHA2 hash van zijn invoer terug in SQL Server.

Transact-SQL syntaxis-conventies

Syntaxis

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

Arguments

<algorithm>
Identificeert het hashing-algoritme dat gebruikt moet worden om de invoer te hashen. Dit is een verplicht argument zonder standaard. De enkele aanhalingstekens zijn verplicht. Vanaf SQL Server 2016 (13.x) zijn alle algoritmen behalve SHA2_256 en SHA2_512 verouderd.

@input
Specificeert een variabele met de te hashen gegevens. @input is varchar, nvarchar of varbinair.

'input'
Specificeert een expressie die geƫvalueert wordt naar een teken of binaire string die gehasht moet worden.

De output voldoet aan de algoritmestandaard: 128 bits (16 bytes) voor MD2, MD4 en MD5; 160 bits (20 bytes) voor SHA en SHA1; 256 bits (32 bytes) voor SHA2_256, en 512 bits (64 bytes) voor SHA2_512.

Van toepassing op: SQL Server 2012 (11.x) en later

Voor SQL Server 2014 (12.x) en eerder zijn toegestane invoerwaarden beperkt tot 8000 bytes.

Retourwaarde

varbinary (maximaal 8000 bytes)

Opmerkingen

Overweeg het gebruik van CHECKSUM or BINARY_CHECKSUM als alternatief om een hashwaarde te berekenen.

De MD2-, MD4-, MD5-, SHA- en SHA1-algoritmen zijn verouderd vanaf SQL Server 2016 (13.x). Gebruik in plaats daarvan SHA2_256 of SHA2_512. Oudere algoritmes blijven werken, maar veroorzaken een deprecatiegebeurtenis.

Voorbeelden

Geef de hash van een variabele terug

Het volgende voorbeeld geeft de SHA2_256 hash terug van de nvarchar-gegevens die in variabele @HashThiszijn opgeslagen.

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

Geef de hash van een tabelkolom terug

Het volgende voorbeeld geeft de SHA2_256 hash van de waarden in de kolom c1 in de tabel Test1terug.

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;  

Hier is het resultatenoverzicht.

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

Zie ook

Kies een encryptie-algoritmeCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)