Share via


DECRYPTBYASYMKEY (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

En esta función se usa una clave asimétrica para descifrar los datos cifrados.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DecryptByAsymKey (Asym_Key_ID , { 'ciphertext' | @ciphertext }   
    [ , 'Asym_Key_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

Asym_Key_ID
Id. de una clave asimétrica en la base de datos. Asym_Key_ID tiene un tipo de datos int.

ciphertext
La cadena de datos cifrados con la clave asimétrica.

@ciphertext
Una variable de tipo varbinary que contiene los datos cifrados con la clave asimétrica.

Asym_Key_Password
La contraseña que se usa para cifrar la clave asimétrica en la base de datos.

Tipos de valor devuelto

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

Observaciones

En comparación con el cifrado y descifrado simétricos, el cifrado y descifrado de claves asimétricas tiene un coste más elevado. Cuando se trabaja con grandes conjuntos de datos (por ejemplo, datos de usuario almacenados en tablas), se recomienda que los desarrolladores eviten el cifrado y descifrado de claves asimétricas.

Permisos

DECRYPTBYASYMKEY requiere el permiso CONTROL en la clave asimétrica.

Ejemplos

En este ejemplo se descifra texto que originalmente se cifró con la clave asimétrica JanainaAsymKey02. Esta clave asimétrica se almacenó en AdventureWorks2022.ProtectedData04. En el ejemplo se descifran los datos devueltos con la clave asimétrica JanainaAsymKey02. En el ejemplo se usa la contraseña pGFD4bb925DGvbd2439587y para descifrar esta clave asimétrica. En el ejemplo se convierte el texto sin formato devuelto al tipo nvarchar.

SELECT CONVERT(NVARCHAR(max),  
    DecryptByAsymKey( AsymKey_Id('JanainaAsymKey02'),   
    ProtectedData, N'pGFD4bb925DGvbd2439587y' ))   
AS DecryptedData   
FROM [AdventureWorks2022].[Sales].[ProtectedData04]   
WHERE Description = N'encrypted by asym key''JanainaAsymKey02''';  
GO  

Consulte también

ENCRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
Elegir un algoritmo de cifrado
Jerarquía de cifrado