HASHBYTES(Transact-SQL)

적용 대상:yesSQL Server(지원되는 모든 버전) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics yesAnalytics Platform System(PDW)

SQL Server에서 해당 입력의 MD2, MD4, MD5, SHA, SHA1 또는 SHA2 해시를 반환합니다.

Topic link iconTransact-SQL 구문 규칙

구문

HASHBYTES ( '<algorithm>', { @input | 'input' } )  
  
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512   

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

<algorithm>
입력 해시에 사용할 해싱 알고리즘을 나타냅니다. 필수 인수이며 기본값은 없습니다. 작은따옴표가 필요합니다. SQL Server 2016(13.x)부터 SHA2_256 및 SHA2_512 이외의 알고리즘은 사용되지 않습니다.

@input
해시할 데이터를 포함하는 변수를 지정합니다. @inputvarchar, 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바이트로 제한됩니다.

Return Value

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)