HASHBYTES (Transact-SQL)

Gilt für:yesSQL Server (alle unterstützen Versionen) YesAzure SQL-Datenbank YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System (PDW)

Gibt den MD2-, MD4-, MD5-, SHA-, SHA1- oder SHA2-Hash der zugehörigen Eingabe in SQL Server zurück.

Topic link iconTransact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

<algorithm>
Identifiziert den für das Hashing der Eingabe zu verwendenden Hashalgorithmus. Dies ist ein erforderliches Argument ohne Standardwert. Die einfachen Anführungszeichen müssen eingegeben werden. Ab SQL Server 2016 (13.x) gelten alle anderen Algorithmen als SHA2_256 und SHA2_512 als veraltet.

@input
Gibt eine Variable mit den Daten an, für die das Hashing ausgeführt werden soll. @input ist varchar, nvarchar oder varbinary.

input
Gibt einen Ausdruck an, der zu einer Zeichenfolge oder Binärzeichenfolge ausgewertet wird, für die das Hashing ausgeführt werden soll.

Die Ausgabe entspricht dem Algorithmusstandard: 128 Bits (16 Bytes) für MD2, MD4 und MD5; 160 Bits (20 Bytes) für SHA und SHA1; 256 Bits (32 Bytes) für SHA2_256 und 512 Bits (64 Bytes) für SHA2_512.

Gilt für: SQL Server 2012 (11.x) und höher

Bei SQL Server 2014 (12.x) und früher sind zulässige Eingabewerte auf 8.000 Byte beschränkt.

Rückgabewert

varbinary (maximal 8.000 Byte)

Hinweise

Erwägen Sie die Verwendung von CHECKSUM oder BINARY_CHECKSUM als Alternativen zur Berechnung eines Hashwerts.

Die Algorithmen MD2, MD4, MD5, SHA und SHA1 sind ab SQL Server 2016 (13.x) veraltet. Verwenden Sie stattdessen SHA2_256 oder SHA2_512. Ältere Algorithmen funktionieren weiterhin, lösen jedoch ein Ereignis aus, das auf die Veraltung hinweist.

Beispiele

Zurückgeben des Hashcodes einer Variablen

Im folgenden Beispiel wird der SHA2_256-Hash der in der @HashThis-Variablen gespeicherten nvarchar-Daten zurückgegeben.

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

Zurückgeben des Hashcodes einer Tabellenspalte

Im folgenden Beispiel wird der SHA2_256-Hash der Werte in der Spalte c1 der Tabelle Test1 zurückgegeben.

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 ist das Resultset.

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

Weitere Informationen

Auswählen eines VerschlüsselungsalgorithmusCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)