共用方式為


HASHBYTES (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric 的 SQL 端點分析 Microsoft Fabric 的倉儲

傳回其在 SQL Server 中輸入的 MD2、MD4、MD5、SHA、SHA1 或 SHA2 雜湊。

Transact-SQL 語法慣例

語法

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

引數

<algorithm>
識別用來雜湊輸入的雜湊演算法。 這是必要的引數,沒有預設值。 必須加上單引號。 從 SQL Server 2016 (13.x) 開始,已淘汰 SHA2_256 和 SHA2_512 以外的所有演算法。

@input
指定含有要雜湊之資料的變數。 @inputvarcharnvarchar,或 varbinary

'input'
指定運算式,這個運算式評估為要雜湊的字元或二進位字串。

輸出符合演算法標準:用於 MD2、MD4 和 MD5 的 128 位元 (16 個位元組);用於 SHA 和 SHA1 的 160 位元 (20 個位元組);用於 SHA2_256 的 256 位元 (32 位元組),以及用於 SHA2_512 的 512 位元 (64 位元組)。

適用於:SQL Server 2012 (11.x) 和更新版本

針對 SQL Server 2014 (12.x) 和更早版本,允許的輸入值限制為 8000 個位元組。

傳回值

varbinary (最大 8000 位元組)

備註

請考慮使用 CHECKSUMBINARY_CHECKSUM 作為計算雜湊值的替代方案。

從 SQL Server 2016 (13.x) 開始,已淘汰 MD2、MD4、MD5、SHA 和 SHA1 演算法。 請改用 SHA2_256 或 SHA2_512。 較舊的演算法會繼續運作,但它們會引發淘汰事件。

範例

傳回變數的雜湊

下列範例會傳回儲存於 @HashThis 變數中 nvarchar 資料的 SHA2_256 雜湊。

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

傳回資料表資料行的雜湊

下列範例會傳回 c1 資料表 Test1 資料行中之值的 SHA2_ 256 雜湊。

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;  

結果集如下所示。

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

另請參閱

選擇加密演算法CHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)