DECRYPTBYKEY (Transact-SQL)
Descifra datos utilizando una clave simétrica.
Sintaxis
DecryptByKey ( { 'ciphertext' | @ciphertext }
[ , add_authenticator, { authenticator | @authenticator } ] )
Argumentos
ciphertext
Son datos que se han cifrado con la clave. ciphertext es varbinary.@ciphertext
Es una variable de tipo varbinary que contiene los datos que se han cifrado con la clave.add_authenticator
Indica si se ha cifrado un autenticador junto con el texto simple. Debe ser el mismo valor pasado a EncryptByKey cuando se cifraron los datos. add_authenticator es int.authenticator
Son los datos de los que se generará un autenticador. Debe coincidir con el valor que se proporcionó a EncryptByKey. authenticator es sysname.@authenticator
Es una variable que contiene los datos a partir de los cuales se generará un autenticador. Debe coincidir con el valor que se proporcionó para EncryptByKey.
Tipos de valor devueltos
varbinary con un tamaño máximo de 8.000 bytes.
Comentarios
DecryptByKey utiliza una clave simétrica. La clave simétrica ya debe estar abierta en la base de datos. Puede haber varias claves abiertas a la vez. No tiene que abrir la clave inmediatamente antes de descifrar el texto cifrado.
El cifrado y descifrado simétrico es relativamente rápido y se puede adaptar para trabajar con grandes cantidades de datos.
Permisos
Requiere que se haya abierto la clave simétrica en la sesión actual. Para obtener más información, vea OPEN SYMMETRIC KEY (Transact-SQL).
Ejemplos
A. Descifrar utilizando una clave simétrica
En el siguiente ejemplo se descifra texto cifrado utilizando una clave simétrica.
-- 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. Descifrar utilizando una clave simétrica y un hash de autenticación
En el siguiente ejemplo se descifran datos que se cifraron mediante un autenticador.
-- 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