Compartir a través de


DECRYPTBYKEY (Transact-SQL)

Descifra datos utilizando una clave simétrica.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

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