HASHBYTES (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint de análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de dados SQL no Microsoft Fabric

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

Transact-SQL convenções de sintaxe

Sintaxe

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

Arguments

<algorithm>
Identifica o algoritmo de hash a ser usado para fazer o hash da entrada. Este é um argumento obrigatório, sem incumprimento. As aspas simples são obrigatórias. A partir do SQL Server 2016 (13.x), todos os algoritmos exceto SHA2_256 e SHA2_512 ficam obsoletos.

@input
Especifica uma variável contendo os dados a ser hashados. @input é varchar, nvarchar ou varbinary.

'entrada'
Especifica uma expressão que avalia para um carácter ou cadeia binária a ser hashada.

A saída cumpre 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 versões posteriores

No SQL Server 2014 (12.x) e anteriores, os valores de entrada permitidos estão limitados a 8000 bytes.

Valor de retorno

varbinary (máximo 8000 bytes)

Observações

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

Os algoritmos MD2, MD4, MD5, SHA e SHA1 estão obsoletos a partir do SQL Server 2016 (13.x). Em vez disso, use SHA2_256 ou SHA2_512. Algoritmos mais antigos continuam a funcionar, mas geram um evento de depreciação.

Examples

Devolver o hash de uma variável

O exemplo seguinte devolve o SHA2_256 hash 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);  

Devolver o hash de uma coluna de tabela

O exemplo seguinte devolve o SHA2_256 hash 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;  

Aqui está o conjunto de resultados.

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