HASHBYTES (Transact-SQL)
Возвращает хэш MD2, MD4, MD5, SHA1 или SHA2 входного значения в SQL Server.
Применимо для следующих объектов: SQL Server (начиная с SQL Server 2008 до текущей версии). |
Синтаксические обозначения в Transact-SQL
Синтаксис
HASHBYTES ( '<algorithm>', { @input | 'input' } )
<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512
Аргументы
'<algorithm>'
Указывает используемый алгоритм хэширования. Этот аргумент обязателен и не имеет значения по умолчанию. Указание одинарных кавычек (") также обязательно.@input
Указывает переменную, содержащую хэшируемые данные. Аргумент @input имеет тип varchar, nvarchar или varbinary.' input '
Определяет выражение, анализирующее тип хэшируемых данных (символьная или двоичная строка).Допустимый размер входных значений ограничен 8000 байт. Выходные данные соответствуют стандарту алгоритма: 128 бит (16 байт) для MD2, MD4 и MD5; 160 бит (20 байт) для SHA и SHA1; 256 бит (32 байта) для SHA2_256 и 512 бит (64 байта) для SHA2_512
256 бит (32 байт) для SHA2_256 и 512 бит (64 байт) для SHA2_512 применяются в SQL Server 2012 с помощью SQL Server 2014.
Возвращаемое значение
varbinary (не более 8000 байт)
Примеры
Возвращение хэша данных в переменной
В следующем примере возвращается SHA1 хэш данных nvarchar, хранящихся в переменной @HashThis.
DECLARE @HashThis nvarchar(4000);
SET @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');
SELECT HASHBYTES('SHA1', @HashThis);
Возвращает хэш данных в столбце таблицы
Следующий пример возвращает хэш SHA1 значений в столбце c1 таблицы Test1.
CREATE TABLE dbo.Test1 (c1 nvarchar(50));
GO
INSERT dbo.Test1 VALUES ('This is a test.'), ('This is test 2.');
GO
SELECT HASHBYTES('SHA1', c1) FROM dbo.Test1;
Ниже приводится результирующий набор.
-------------------------------------------
0x0E7AAB0B4FF0FD2DFB4F0233E2EE7A26CD08F173
0xF643A82F948DEFB922B12E50B950CEE130A934D6
(2 row(s) affected)