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 雜湊。
語法
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
指定含有要雜湊之資料的變數。 @input
為 varchar、nvarchar,或 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 位元組)
備註
請考慮使用 CHECKSUM
或 BINARY_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)