Partilhar via


HASHBYTES (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics PDW (Analytics Platform System) Ponto de extremidade de análise do SQL Warehouse no Microsoft Fabric

Retorna o hash de MD2, MD4, MD5, SHA, SHA1 ou SHA2 de sua entrada no SQL Server.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

<algorithm>
Identifica o algoritmo de hash a ser usado para aplicar o hash à entrada. Este é um argumento exigido sem padrão. As aspas simples são obrigatórias. Começando pelo SQL Server 2016 (13.x), todos os algoritmos, exceto SHA2_256 e SHA2_512, foram preteridos.

@input
Especifica uma variável que contém os dados a aceitar o hash. @input é varchar, nvarchar ou varbinary.

'input'
Especifica uma expressão que é avaliada para uma cadeia de caracteres binária ou um caractere que receberá hash.

A saída segue o padrão do algoritmo: 128 bits (16 bytes) para MD2, MD4 e MD5; 160 bits (20 bytes) para SHA e SHA1; 256 bits (32 bytes) para SHA2_256 e 512 bits (64 bytes) para SHA2_512.

Aplica-se a: SQL Server 2012 (11.x) e posterior

Para o SQL Server 2014 (12.x) e anterior, os valores de entrada permitidos estão limitados a 8.000 bytes.

Valor retornado

varbinary (máximo de 8.000 bytes)

Comentários

Considere o uso de CHECKSUM ou BINARY_CHECKSUM como alternativas para calcular um valor de hash.

Os algoritmos MD2, MD4, MD5, SHA e SHA1 começando com SQL Server 2016 (13.x) são preteridos. Use SHA2_256 ou SHA2_512. Os algoritmos mais antigos continuarão funcionando, mas acionarão um evento de reprovação.

Exemplos

Retornar o hash de uma variável

O exemplo a seguir retorna o hash SHA2_256 dos dados nvarchar armazenados na variável @HashThis.

DECLARE @HashThis NVARCHAR(32);  
SET @HashThis = CONVERT(NVARCHAR(32),'dslfdkjLK85kldhnv$n000#knf');  
SELECT HASHBYTES('SHA2_256', @HashThis);  

Retornar o hash de uma coluna de tabela

O exemplo a seguir retorna o hash SHA2_256 dos valores na coluna c1 da tabela 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;  

Veja a seguir o conjunto de resultados.

-------------------------------------------  
0x741238C01D9DB821CF171BF61D72260B998F7C7881D90091099945E0B9E0C2E3 
0x91DDCC41B761ACA928C62F7B0DA61DC763255E8247E0BD8DCE6B22205197154D  
(2 row(s) affected)  

Confira também

Escolha um Algoritmo de CriptografiaCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)