Udostępnij za pomocą


HASHBYTES (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca skrót MD2, MD4, MD5, SHA, SHA1 lub SHA2 swojego wejścia w SQL Serverze.

Transact-SQL konwencje składni

Składnia

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

Arguments

<algorithm>
Identyfikuje algorytm haszujący, który ma być użyty do hashowania wejścia. To jest wymagany argument bez domyślności. Wymagane są pojedyncze cudzysłowy. Począwszy od SQL Server 2016 (13.x), wszystkie algorytmy poza SHA2_256 i SHA2_512 są wycofane.

@input
Określa zmienną zawierającą dane do haszu. @input jest varchar, nvarchar lub varbinary.

'input'
Określa wyrażenie, które ewalduje do znaku lub ciągu binarnego do haszu.

Wynik jest zgodny ze standardem algorytmu: 128 bitów (16 bajtów) dla MD2, MD4 i MD5; 160 bitów (20 bajtów) dla SHA i SHA1; 256 bitów (32 bajty) dla SHA2_256 i 512 bitów (64 bajty) dla SHA2_512.

Dotyczy do: SQL Server 2012 (11.x) i nowszy

W SQL Server 2014 (12.x) i starszych dozwolone wartości wejściowe są ograniczone do 8000 bajtów.

Wartość zwracana

varbinary (maksymalnie 8000 bajtów)

Uwagi

Rozważ użycie CHECKSUM lub BINARY_CHECKSUM jako alternatywę do obliczenia wartości skrótu.

Algorytmy MD2, MD4, MD5, SHA i SHA1 są wycofane od SQL Server 2016 (13.x). Zamiast tego użyj SHA2_256 lub SHA2_512. Starsze algorytmy będą nadal działać, ale wywołają zdarzenie wycofania (deprecation).

Przykłady

Zwróć skrót zmiennej

Poniższy przykład zwraca SHA2_256 skrót danych nvarchar przechowywanych w zmiennej @HashThis.

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

Zwróć skrót kolumny tabeli

Poniższy przykład zwraca SHA2_256 skrót wartości w kolumnie c1 tabeli 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;  

Oto zestaw wyników.

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

Zobacz też

Wybierz algorytm szyfrowaniaCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)