HASHBYTES (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (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
指定包含要对其执行哈希操作的数据的变量。 为 varchar、nvarchar 或 varbinary@input
。
'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);
返回表列的哈希
下面的示例返回 Test1
表 c1
列中值的 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)