HASHBYTES (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Devuelve el hash MD2, MD4, MD5, SHA, SHA1 o SHA2 de su entrada en SQL Server.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulta la Documentación de versiones anteriores.

Argumentos

<algorithm>
Identifica el algoritmo hash que se va a utilizar para realizar el hash de la entrada. Es un argumento requerido y no tiene valor predeterminado. Las comillas simples son necesarias. A partir de SQL Server 2016 (13.x), todos los algoritmos están en desuso, salvo SHA2_256 y SHA2_512.

@input
Especifica una variable que contiene los datos en los que se va a realizar el hash. @input es varchar, nvarchar o varbinary.

"input"
Especifica una expresión que se evalúa como un carácter o una cadena binaria que se va a aplicar el algoritmo hash.

La salida se ajusta al algoritmo estándar: 128 bits (16 bytes) para MD2, MD4 y MD5; 160 bits (20 bytes) para SHA y SHA1; 256 bits (32 bytes) para SHA2_256 y 512 bits (64 bytes) para SHA2_512.

Válido para SQL Server 2012 (11.x) y versiones posteriores.

En SQL Server 2014 (12.x) y versiones anteriores, los valores de entrada permitidos tienen un límite de 8000 bytes.

Valor devuelto

varbinary (máximo de 8000 bytes)

Observaciones

Plantéese usar CHECKSUM o BINARY_CHECKSUM como alternativas para calcular un valor hash.

Los algoritmos MD2, MD4, MD5, SHA y SHA1 están en desuso desde SQL Server 2016 (13.x). Use SHA2_256 o SHA2_512 en su lugar. Los algoritmos antiguos seguirán funcionando, pero generarán un evento de desuso.

Ejemplos

Devuelve el valor hash de una variable

En el siguiente ejemplo se devuelve el hash SHA2_256 de los datos nvarchar almacenados en la variable @HashThis.

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

Devuelve el valor hash de una columna de tabla

En el ejemplo siguiente se devuelve el valor hash SHA2_256 de los valores de la columna c1 de la tabla 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;  

El conjunto de resultados es el siguiente:

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

Consulte también

Elegir un algoritmo de cifradoCHECKSUM_AGG (Transact-SQL)CHECKSUM (Transact-SQL)BINARY_CHECKSUM (Transact-SQL)