DECRYPTBYKEY (Transact-SQL)DECRYPTBYKEY (Transact-SQL)

SE APLICA A: síSQL Server (a partir de 2008) síAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

En esta función se usa una clave simétrica para descifrar los datos.This function uses a symmetric key to decrypt data.

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

SintaxisSyntax


DecryptByKey ( { 'ciphertext' | @ciphertext }   
    [ , add_authenticator, { authenticator | @authenticator } ] )  

ArgumentosArguments

ciphertextciphertext
Una variable de tipo varbinary que contiene los datos cifrados con la clave.A variable of type varbinary containing data encrypted with the key.

@ciphertext
Una variable de tipo varbinary que contiene los datos cifrados con la clave.A variable of type varbinary containing data encrypted with the key.

add_authenticatoradd_authenticator
Indica si el proceso de cifrado original incluía, y cifraba, un autenticador junto con el texto sin formato.Indicates whether the original encryption process included, and encrypted, an authenticator together with the plaintext. Debe coincidir con el valor que se pasa a ENCRYPTBYKEY (Transact-SQL) durante el proceso de cifrado de datos.Must match the value passed to ENCRYPTBYKEY (Transact-SQL) during the data encryption process. add_authenticator tiene un tipo de datos int.add_authenticator has an int data type.

authenticatorauthenticator
Los datos que se usaron como base para la generación del autenticador.The data used as the basis for the generation of the authenticator. Debe coincidir con el valor que se proporcionó a ENCRYPTBYKEY (Transact-SQL).Must match the value supplied to ENCRYPTBYKEY (Transact-SQL). autenticador tiene un tipo de datos sysname.authenticator has a sysname data type.

@authenticator
Una variable que contiene datos a partir de los que se genera un autenticador.A variable containing data from which an authenticator generates. Debe coincidir con el valor que se proporcionó a ENCRYPTBYKEY (Transact-SQL).Must match the value supplied to ENCRYPTBYKEY (Transact-SQL). @authenticator tiene un tipo de datos sysname.@authenticator has a sysname data type.

Tipos devueltosReturn Types

varbinary, con un tamaño máximo de 8 000 bytes.varbinary, with a maximum size of 8,000 bytes. DECRYPTBYKEY devuelve NULL si la clave simétrica usada para el cifrado de los datos no está abierta o si ciphertext es NULL.DECRYPTBYKEY returns NULL if the symmetric key used for data encryption is not open or if ciphertext is NULL.

NotasRemarks

DECRYPTBYKEY usa una clave simétrica.DECRYPTBYKEY uses a symmetric key. La base de datos debe tener esta clave simétrica ya abierta.The database must have this symmetric key already open. DECRYPTBYKEY permitirá varias claves abiertas a la vez.DECRYPTBYKEY will allow multiple keys open at the same time. No es necesario abrir la clave inmediatamente antes de descifrar el texto cifrado.You do not have to open the key immediately before cipher text decryption.

El cifrado y descifrado simétricos suelen funcionar con relativa rapidez, y funcionan bien para las operaciones que implican grandes volúmenes de datos.Symmetric encryption and decryption typically operates relatively quickly, and it works well for operations involving large data volumes.

PermisosPermissions

La clave simétrica ya debe estar abierta en la sesión actual.The symmetric key must already be open in the current session. Para obtener más información, vea OPEN SYMMETRIC KEY (Transact-SQL).See OPEN SYMMETRIC KEY (Transact-SQL) for more information.

EjemplosExamples

A.A. Descifrar utilizando una clave simétricaDecrypting by using a symmetric key

En este ejemplo se descifra texto cifrado con una clave simétrica.This example decrypts ciphertext with a symmetric key.

-- First, open the symmetric key with which to decrypt the data.  
OPEN SYMMETRIC KEY SSN_Key_01  
   DECRYPTION BY CERTIFICATE HumanResources037;  
GO  

-- Now list the original ID, the encrypted ID, and the   
-- decrypted ciphertext. If the decryption worked, the original  
-- and the decrypted ID will match.  
SELECT NationalIDNumber, EncryptedNationalID   
    AS 'Encrypted ID Number',  
    CONVERT(nvarchar, DecryptByKey(EncryptedNationalID))   
    AS 'Decrypted ID Number'  
    FROM HumanResources.Employee;  
GO  

B.B. Descifrar utilizando una clave simétrica y un hash de autenticaciónDecrypting by using a symmetric key and an authenticating hash

En este ejemplo se descifran datos que originalmente se cifraron juntos con un autenticador.This example decrypts data originally encrypted together with an authenticator.

-- First, open the symmetric key with which to decrypt the data  
OPEN SYMMETRIC KEY CreditCards_Key11  
   DECRYPTION BY CERTIFICATE Sales09;  
GO  

-- Now list the original card number, the encrypted card number,  
-- and the decrypted ciphertext. If the decryption worked,   
-- the original number will match the decrypted number.  
SELECT CardNumber, CardNumber_Encrypted   
    AS 'Encrypted card number', CONVERT(nvarchar,  
    DecryptByKey(CardNumber_Encrypted, 1 ,   
    HashBytes('SHA1', CONVERT(varbinary, CreditCardID))))   
    AS 'Decrypted card number' FROM Sales.CreditCard;  
GO  

Ver tambiénSee Also

ENCRYPTBYKEY (Transact-SQL) ENCRYPTBYKEY (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL) CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL) ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL) DROP SYMMETRIC KEY (Transact-SQL)
Jerarquía de cifrado Encryption Hierarchy
Elegir un algoritmo de cifradoChoose an Encryption Algorithm