Sdílet prostřednictvím


HASHBYTES (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLAzure Synapse AnalyticsAnalytics Platform System (PDW)Koncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Vrací hash MD2, MD4, MD5, SHA, SHA1 nebo SHA2 svého vstupu v SQL Serveru.

Transact-SQL konvence syntaxe

Syntaxe

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

Arguments

<algorithm>
Identifikuje hashovací algoritmus, který se použije k hashování vstupu. To je nutný argument bez defaultu. Jsou povinné používat pouze úvodzovky. Od SQL Server 2016 (13.x) jsou všechny algoritmy kromě SHA2_256 a SHA2_512 zastaralé.

@input
Specifikuje proměnnou obsahující data, která mají být hashována. @input je varchar, nvarchar nebo varbinární.

'vstup'
Specifikuje výraz, který se vyhodnocuje na znak nebo binární řetězec, který má být hashován.

Výstup odpovídá standardu algoritmu: 128 bitů (16 bajtů) pro MD2, MD4 a MD5; 160 bitů (20 bajtů) pro SHA a SHA1; 256 bitů (32 bajtů) pro SHA2_256 a 512 bitů (64 bajtů) pro SHA2_512.

Platí na: SQL Server 2012 (11.x) a novější

Pro SQL Server 2014 (12.x) a starší jsou povolené vstupní hodnoty omezeny na 8000 bajtů.

Návratová hodnota

varbinární (maximálně 8000 bajtů)

Poznámky

Zvažte použití CHECKSUM nebo BINARY_CHECKSUM jako alternativu k výpočtu hash hodnoty.

Algoritmy MD2, MD4, MD5, SHA a SHA1 jsou od SQL Server 2016 (13.x) zastaralé. Místo toho použijte SHA2_256 nebo SHA2_512. Starší algoritmy budou dál fungovat, ale vyvolávají událost o ukončení provozu.

Examples

Vraťte hash proměnné

Následující příklad vrací SHA2_256 hash dat nvarchar uložených v proměnné @HashThis.

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

Vraťte hash sloupce tabulky

Následující příklad vrací SHA2_256 hash hodnot ve sloupci c1 tabulky 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;  

Tady je soubor výsledků.

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

Viz také

Vyberte šifrovací algoritmusCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)