DECRYPTBYCERT (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En esta función se usa la clave privada de un certificado para descifrar los datos cifrados.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

certificate_ID
Id. de un certificado de la base de datos. certificate_ID tiene un tipo de datos int.

ciphertext
La cadena de datos cifrados con la clave pública del certificado.

@ciphertext
Una variable de tipo varbinary que contiene los datos cifrados con el certificado.

cert_password
La contraseña que se usa para cifrar la clave privada del certificado. cert_password debe tener un formato de datos Unicode.

@cert_password
Una variable de tipo nchar o nvarchar que contiene la contraseña que se usa para cifrar la clave privada del certificado. @cert_password debe tener un formato de datos Unicode.

Tipos de valor devuelto

varbinary, con un tamaño máximo de 8 000 bytes.

Observaciones

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, se recomienda que los desarrolladores eviten el uso de ENCRYPTBYCERT y DECRYPTBYCERT para el cifrado y descifrado de datos de usuario rutinarios.

Permisos

DECRYPTBYCERT requiere el permiso CONTROL en el certificado.

Ejemplos

En este ejemplo se seleccionan filas de [AdventureWorks2022].[ProtectedData04] marcadas como datos que originalmente se cifraron mediante el certificado JanainaCert02. En el ejemplo, primero se descifra la clave privada del certificado JanainaCert02 con la contraseña del certificado pGFD4bb925DGvbd2439587y. Después, en el ejemplo se descifra el texto cifrado con esta clave privada. En el ejemplo, los datos descifrados se convierten de varbinary a nvarchar.

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

Consulte también

ENCRYPTBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
Jerarquía de cifrado