Compartir a través de


DECRYPTBYCERT (Transact-SQL)

Descifra datos con la clave privada de un certificado.

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

Sintaxis

DecryptByCert ( certificate_ID , { 'ciphertext' | @ciphertext } 
    [ , { 'cert_password' | @cert_password } ] )

Argumentos

  • certificate_ID
    Es el identificador de un certificado de la base de datos. El valor de certificate_ID es int.

  • ciphertext
    Es una cadena de datos que se ha cifrado con la clave pública del certificado.

  • @ciphertext
    Es una variable de tipo varbinary que contiene los datos que se han cifrado con el certificado.

  • cert_password
    Es la contraseña utilizada para cifrar la clave privada del certificado. Debe ser Unicode.

  • @cert_password
    Es una variable de tipo nchar o nvarchar que contiene la contraseña usada para cifrar la clave privada del certificado. Debe ser Unicode.

Tipos de valor devueltos

varbinary con un tamaño máximo de 8.000 bytes.

Comentarios

Esta función descifra datos con la clave privada de un certificado. Las transformaciones cifradas que utilizan claves asimétricas consumen gran cantidad de recursos. Por tanto, EncryptByCert y DecryptByCert no resultan adecuados para el cifrado rutinario de datos de usuario.

Permisos

Requiere el permiso CONTROL en el certificado.

Ejemplos

En el ejemplo siguiente se seleccionan filas de [AdventureWorks2008R2].[ProtectedData04] marcadas como data encrypted by certificate JanainaCert02. En el ejemplo se descifra el texto cifrado con la clave privada del certificado JanainaCert02, que se descifra previamente con la contraseña del certificado, pGFD4bb925DGvbd2439587y. Los datos descifrados se convierten de varbinary en nvarchar.

SELECT convert(nvarchar(max), DecryptByCert(Cert_Id('JanainaCert02'),
    ProtectedData, N'pGFD4bb925DGvbd2439587y'))
FROM [AdventureWorks2008R2].[ProtectedData04] 
WHERE Description 
    = N'data encrypted by certificate '' JanainaCert02''';
GO