HASHBYTES is one of the useful functions when it comes to generate hash values on the basis of different types of algorithms. In the earlier versions, it supports MD2, MD4, MD5, SHA, SHA1 algorithms and these algorithms are limited up to 20 bytes only.
In SQL Server 2012, we have an enhancement in this function and now it supports SHA2_256, SHA2_512 algorithms that can generate 32 and 64 bytes hash codes for the respective input.
Let me explain this enhancement with simple example :
DECLARE @String varchar(7); Set @String ='raresql' --This [Algorithm type] will work in SQL Server 2005 and above SELECT 'MD2' AS [Algorithm type] , HASHBYTES('MD2', @String) as [HashBytes] , LEN(HASHBYTES('MD2', @String)) as [Length in Bytes] UNION ALL --This [Algorithm type] will work in SQL Server 2005 and above SELECT 'MD4' AS [Algorithm type] , HASHBYTES('MD4', @String) as [HashBytes] , LEN(HASHBYTES('MD4', @String)) as [Length in Bytes] UNION ALL --This [Algorithm type] will work in SQL Server 2005 and above SELECT 'MD5' AS [Algorithm type] , HASHBYTES('MD5', @String) as [HashBytes] , LEN(HASHBYTES('MD5', @String)) as [Length in Bytes] UNION ALL --This [Algorithm type] will work in SQL Server 2005 and above SELECT 'SHA' AS [Algorithm type] , HASHBYTES('SHA', @String) as [HashBytes] , LEN(HASHBYTES('SHA', @String)) as [Length in Bytes] UNION ALL --This [Algorithm type] will work in SQL Server 2005 and above SELECT 'SHA1' AS [Algorithm type] , HASHBYTES('SHA1', @String) as [HashBytes] , LEN(HASHBYTES('SHA1', @String)) as [Length in Bytes] UNION ALL --This [Algorithm type] will work in SQL Server 2012 and above SELECT 'SHA2_256' AS [Algorithm type] , HASHBYTES('SHA2_256', @String) as [HashBytes] , LEN(HASHBYTES('SHA2_256', @String)) as [Length in Bytes] UNION ALL --This [Algorithm type] will work in SQL Server 2012 and above SELECT 'SHA2_512' AS [Algorithm type] , HASHBYTES('SHA2_512', @String) as [HashBytes] , LEN(HASHBYTES('SHA2_512', @String)) as [Length in Bytes] GO --OUTPUT
Note : If you execute above script in earlier version of SQL Server, it will return NULL value for SHA2_256 & SHA2_512 whereas it generates the hashbytes value for all other algorithms.
Reference : MSDN