HASHBYTES (Transact-SQL)HASHBYTES (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ ЭТОЙ СТАТЬИ: даSQL Server (начиная с 2008)даБаза данных SQL AzureдаХранилище данных SQL AzureдаParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Возвращает хэш MD2, MD4, MD5, SHA1 или SHA2 входного значения в SQL ServerSQL Server.Returns the MD2, MD4, MD5, SHA, SHA1, or SHA2 hash of its input in SQL ServerSQL Server.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

HASHBYTES ( '<algorithm>', { @input | 'input' } )  

<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512   

АргументыArguments

'<algorithm>''<algorithm>'
Указывает используемый алгоритм хэширования.Identifies the hashing algorithm to be used to hash the input. Этот аргумент обязателен и не имеет значения по умолчанию.This is a required argument with no default. Указание одинарных кавычек (") также обязательно.The single quotation marks are required. Начиная с версии SQL Server 2016 (13.x)SQL Server 2016 (13.x) все алгоритмы, отличные от SHA2_256 и SHA2_512, являются нерекомендуемыми.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), all algorithms other than SHA2_256, and SHA2_512 are deprecated. Старые алгоритмы (нерекомендуемые) по-прежнему будут работать, но будут вызывать событие нерекомендуемого алгоритма.Older algorithms (not recommended) will continue working, but they will raise a deprecation event.

@input
Указывает переменную, содержащую хэшируемые данные.Specifies a variable containing the data to be hashed. @input имеет тип varchar, nvarchar или varbinary.@input is varchar, nvarchar, or varbinary.

' input '' input '
Определяет выражение, анализирующее тип хэшируемых данных (символьная или двоичная строка).Specifies an expression that evaluates to a character or binary string to be hashed.

Выходные данные соответствуют стандарту алгоритма: 128 бит (16 байт) для MD2, MD4 и MD5; 160 бит (20 байт) для SHA и SHA1; 256 бит (32 байта) для SHA2_256 и 512 бит (64 байта) для SHA2_512.The output conforms to the algorithm standard: 128 bits (16 bytes) for MD2, MD4, and MD5; 160 bits (20 bytes) for SHA and SHA1; 256 bits (32 bytes) for SHA2_256, and 512 bits (64 bytes) for SHA2_512.

Применимо к: с SQL Server 2012 (11.x)SQL Server 2012 (11.x) до SQL Server 2017SQL Server 2017Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017

Для SQL Server 2014 (12.x)SQL Server 2014 (12.x) и более ранних версий допустимый размер входных значений ограничен 8000 байтами.For SQL Server 2014 (12.x)SQL Server 2014 (12.x) and earlier, allowed input values are limited to 8000 bytes.

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

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

ПримерыExamples

А. Возвращение хэша данных в переменнойA: Return the hash of a variable

В приведенном ниже примере возвращается хэш SHA1 данных типа nvarchar, хранящихся в переменной @HashThis.The following example returns the SHA1 hash of the nvarchar data stored in variable @HashThis.

DECLARE @HashThis nvarchar(4000);  
SET @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');  
SELECT HASHBYTES('SHA1', @HashThis);  

Б. Получение хэша данных в столбце таблицыB: Return the hash of a table column

Следующий пример возвращает хэш SHA1 значений в столбце c1 таблицы Test1.The following example returns the SHA1 hash of the values in column c1 in the table Test1.

CREATE TABLE dbo.Test1 (c1 nvarchar(50));  
INSERT dbo.Test1 VALUES ('This is a test.');  
INSERT dbo.Test1 VALUES ('This is test 2.');  
SELECT HASHBYTES('SHA1', c1) FROM dbo.Test1;  

Ниже приводится результирующий набор.Here is the result set.


-------------------------------------------  
0x0E7AAB0B4FF0FD2DFB4F0233E2EE7A26CD08F173  
0xF643A82F948DEFB922B12E50B950CEE130A934D6  

(2 row(s) affected)  

См. также:See Also

Выбор алгоритма шифрованияChoose an Encryption Algorithm