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)