DecryptByKey (Transact-SQL)
Descifra datos utilizando una clave simétrica.
Convenciones de sintaxis de Transact-SQL
Sintaxis
DecryptByKey ( { 'ciphertext' | @ciphertext }
[ , add_authenticator
, { authenticator | @authenticator }
]
)
Argumentos
- ciphertext
Son los datos que se han cifrado con la clave. 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. int.
- authenticator
Son los datos de los que se generará un autenticador. Debe coincidir con el valor que se proporcionó para EncryptByKey. 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.
Notas
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.
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
Vea también
Referencia
EncryptByKey (Transact-SQL)
CREATE SYMMETRIC KEY (Transact-SQL)
ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL)
Otros recursos
Jerarquía de cifrado
Elegir un algoritmo de cifrado