HASHBYTES (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Управляемый экземпляр SQL Azure Конечная точка аналитики аналитики Synapse Analytics Analytics (PDW)SQL Analyticsв Microsoft FabricХранилище в Microsoft Fabric

Возвращает хэш MD2, MD4, MD5, SHA, SHA1 или SHA2 входных данных в SQL Server.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

<algorithm>
Указывает используемый алгоритм хэширования. Этот аргумент обязателен и не имеет значения по умолчанию. Указание одинарных кавычек (") также обязательно. Начиная с SQL Server 2016 (13.x), все алгоритмы, отличные от SHA2_256, и SHA2_512 устарели.

@input
Указывает переменную, содержащую хэшируемые данные. @input имеет тип varchar, nvarchar или varbinary.

input
Определяет выражение, анализирующее тип хэшируемых данных (символьная или двоичная строка).

Выходные данные соответствуют стандарту алгоритма: 128 бит (16 байт) для MD2, MD4 и MD5; 160 бит (20 байт) для SHA и SHA1; 256 бит (32 байта) для SHA2_256 и 512 бит (64 байта) для SHA2_512.

Область применения: SQL Server 2012 (11.x) и более поздних версий

Для SQL Server 2014 (12.x) и более ранних версий допустимые входные значения ограничены 8000 байтами.

Возвращаемое значение

varbinary (не более 8000 байт)

Замечания

Попробуйте использовать CHECKSUM или BINARY_CHECKSUM в качестве альтернативы для вычисления хэш-значения.

Алгоритмы MD2, MD4, MD5, SHA и SHA1 устарели начиная с SQL Server 2016 (13.x). Вместо этого используйте алгоритмы 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);  

Возвращает хэш данных в столбце таблицы

Следующий пример возвращает хэш SHA2_256 для значений в столбце c1 таблицы Test1.

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)