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)

См. также

Основные понятия

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