Returns the MD2, MD4, MD5, SHA, SHA1, or SHA2 hash of its input in SQL Server
Transact-SQL Syntax Conventions
HASHBYTES ( '<algorithm>', { @input | 'input' } )
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
‘<algorithm>’
Identifies the hashing algorithm to be used to hash the input. This is a required argument with no default. The single quotation marks are required. Beginning with SQL Server 2016 (13.x) all algorithms other than SHA2_256, and SHA2_512 are deprecated. Older algorithms (not recommended) will continue working, but they will raise a deprecation event.
@input
Specifies a variable containing the data to be hashed. @input is varchar, nvarchar, or varbinary.
’ input ’
Specifies an expression that evaluates to a character or binary string to be hashed.
The output conforms to the algorithm standard: 128 bits (16 bytes) for MD2, MD4, and MD5; 160 bits (20 bytes) for SHA and SHA1; 256 bits (32 bytes) for SHA2_256, and 512 bits (64 bytes) for SHA2_512.
Applies to: SQL Server 2012 (11.x) through SQL Server 2012 (11.x) SQL Server 2017
For SQL Server 2014 (12.x) and earlier, allowed input values are limited to 8000 bytes.
varbinary (maximum 8000 bytes)
The following example returns the SHA1
hash of the nvarchar data stored in variable @HashThis
.
DECLARE @HashThis nvarchar(4000);
SET @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HASHBYTES('SHA1', @HashThis);
The following example returns the SHA1 hash of the values in column c1
in the table Test1
.
CREATE TABLE dbo.Test1 (c1 nvarchar(50));
INSERT dbo.Test1 VALUES ('This is a test.');
INSERT dbo.Test1 VALUES ('This is test 2.');
SELECT HASHBYTES('SHA1', c1) FROM dbo.Test1;
Here is the result set.
-------------------------------------------
0x0E7AAB0B4FF0FD2DFB4F0233E2EE7A26CD08F173
0xF643A82F948DEFB922B12E50B950CEE130A934D6
(2 row(s) affected)