HASHBYTES (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в 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
Аргументы
<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)