HASHBYTES(Transact-SQL)

적용 대상:SQL 서버Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsMicrosoft Fabric 의 SQL 분석 엔드포인트Microsoft Fabric 의 웨어하우스Microsoft Fabric의 SQL 데이터베이스

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
해시할 데이터를 포함하는 변수를 지정합니다. @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를 사용합니다. 이전 알고리즘은 계속 작동하지만 사용 중단 이벤트가 발생합니다.

예제

변수의 해시 반환

다음 예에서는 변수 SHA2_256에 저장된 nvarchar 데이터의 @HashThis 해시를 반환합니다.

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)