HASHBYTES (Transact-SQL)HASHBYTES (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Devuelve el hash MD2, MD4, MD5, SHA, SHA1 o SHA2 de su entrada en SQL ServerSQL Server.Returns the MD2, MD4, MD5, SHA, SHA1, or SHA2 hash of its input in SQL ServerSQL Server.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

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

ArgumentosArguments

<algorithm>
Identifica el algoritmo hash que se va a utilizar para realizar el hash de la entrada.Identifies the hashing algorithm to be used to hash the input. Es un argumento requerido y no tiene valor predeterminado.This is a required argument with no default. Las comillas simples son necesarias.The single quotation marks are required. A partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x), todos los algoritmos están en desuso, salvo SHA2_256 y SHA2_512.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), all algorithms other than SHA2_256, and SHA2_512 are deprecated.

@input
Especifica una variable que contiene los datos en los que se va a realizar el hash.Specifies a variable containing the data to be hashed. @input es varchar, nvarchar o varbinary.@input is varchar, nvarchar, or varbinary.

"input"'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.Specifies an expression that evaluates to a character or binary string to be hashed.

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.The output conforms to the algorithm standard: 128 bits (16 bytes) for MD2, MD4, and MD5; 160 bits (20 bytes) for SHA and SHA1; 256 bits (32 bytes) for SHA2_256, and 512 bits (64 bytes) for SHA2_512.

Válido para SQL Server 2012 (11.x)SQL Server 2012 (11.x) y versiones posteriores.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later

En SQL Server 2014 (12.x)SQL Server 2014 (12.x) y versiones anteriores, los valores de entrada permitidos tienen un límite de 8000 bytes.For SQL Server 2014 (12.x)SQL Server 2014 (12.x) and earlier, allowed input values are limited to 8000 bytes.

Valor devueltoReturn Value

varbinary (máximo de 8000 bytes)varbinary (maximum 8000 bytes)

NotasRemarks

Plantéese usar CHECKSUM o BINARY_CHECKSUM como alternativas para calcular un valor hash.Consider using CHECKSUM or BINARY_CHECKSUM as alternatives to compute a hash value.

Los algoritmos MD2, MD4, MD5, SHA y SHA1 están en desuso desde SQL Server 2016 (13.x)SQL Server 2016 (13.x).The MD2, MD4, MD5, SHA, and SHA1 algorithms are deprecated starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x). Use SHA2_256 o SHA2_512 en su lugar.Use SHA2_256 or SHA2_512 instead. Los algoritmos antiguos seguirán funcionando, pero generarán un evento de desuso.Older algorithms will continue working, but they will raise a deprecation event.

EjemplosExamples

Devuelve el valor hash de una variableReturn the hash of a variable

En el siguiente ejemplo se devuelve el hash SHA2_256 de los datos nvarchar almacenados en la variable @HashThis.The following example returns the SHA2_256 hash of the nvarchar data stored in 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 tablaReturn the hash of a table column

En el ejemplo siguiente se devuelve el valor hash SHA2_256 de los valores de la columna c1 de la tabla Test1.The following example returns the SHA2_256 hash of the values in column c1 in the table 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.Here is the result set.

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

Consulte tambiénSee Also

Elegir un algoritmo de cifrado CHECKSUM_AGG (Transact-SQL) CHECKSUM (Transact-SQL) BINARY_CHECKSUM (Transact-SQL)Choose an Encryption Algorithm CHECKSUM_AGG (Transact-SQL) CHECKSUM (Transact-SQL) BINARY_CHECKSUM (Transact-SQL)