Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Managed Instance
Esta función descifra los datos cifrados. Primero descifra una clave simétrica con una clave asimétrica independiente y, a continuación, descifra los datos cifrados con la clave simétrica extraída en el primer paso.
Convenciones de sintaxis de Transact-SQL
Sintaxis
DECRYPTBYKEYAUTOASYMKEY ( akey_ID , akey_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Argumentos
akey_ID
Es el identificador de la clave asimétrica que se usa para cifrar la clave simétrica. akey_ID tiene un tipo de datos int.
akey_password
La contraseña que protege la clave asimétrica.
akey_password puede tener un NULL valor si la clave maestra de base de datos (DMK) protege la clave privada asimétrica.
akey_password tiene un tipo de datos nvarchar.
ciphertext
Los datos cifrados con la clave. ciphertext tiene un tipo de datos varbinary.
@ciphertext
Una variable de tipo varbinary que contiene los datos cifrados con la clave simétrica.
add_authenticator
Indica si el proceso de cifrado original incluía, y cifraba, un autenticador junto con el texto sin formato. Debe coincidir con el valor pasado a ENCRYPTBYKEY durante el proceso de cifrado de datos. add_authenticator tiene un valor de 1 si el proceso de cifrado usó un autenticador. add_authenticator tiene un tipo de datos int.
@add_authenticator
Una variable que indica si el proceso de cifrado original incluía, y cifraba, un autenticador junto con el texto sin formato. Debe coincidir con el valor pasado a ENCRYPTBYKEY durante el proceso de cifrado de datos. @add_authenticator tiene un tipo de datos int.
authenticator
Los datos que se usaron como base para la generación del autenticador. Debe coincidir con el valor proporcionado a ENCRYPTBYKEY. autenticador tiene un tipo de datos sysname.
@authenticator
Una variable que contiene datos a partir de los que se genera un autenticador. Debe coincidir con el valor proporcionado a ENCRYPTBYKEY. @authenticator tiene un tipo de datos sysname.
@add_authenticator
Una variable que indica si el proceso de cifrado original incluía, y cifraba, un autenticador junto con el texto sin formato. Debe coincidir con el valor pasado a ENCRYPTBYKEY durante el proceso de cifrado de datos. @add_authenticator tiene un tipo de datos int.
authenticator
Los datos que se usaron como base para la generación del autenticador. Debe coincidir con el valor proporcionado a ENCRYPTBYKEY. autenticador tiene un tipo de datos sysname.
@authenticator
Una variable que contiene datos a partir de los que se genera un autenticador. Debe coincidir con el valor proporcionado a ENCRYPTBYKEY. @authenticator tiene un tipo de datos sysname.
Tipos de retorno
varbinary, con un tamaño máximo de 8 000 bytes.
Observaciones
DECRYPTBYKEYAUTOASYMKEY combina las funciones de OPEN SYMMETRIC KEY y DECRYPTBYKEY. En una sola operación, primero descifra una clave simétrica y después la usa para descifrar el texto cifrado.
Permisos
Se requiere el permiso VIEW DEFINITION en la clave simétrica y el permiso CONTROL en la clave asimétrica.
Ejemplos
En este ejemplo se muestra cómo DECRYPTBYKEYAUTOASYMKEY puede simplificar el código de descifrado. Este código debe ejecutarse en una AdventureWorks2025 base de datos que aún no tiene una DMK. Reemplace por <password> una contraseña segura.
--Create the keys and certificate.
USE AdventureWorks2022;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';
CREATE ASYMMETRIC KEY SSN_AKey
WITH ALGORITHM = RSA_2048;
GO
CREATE SYMMETRIC KEY SSN_Key_02
WITH ALGORITHM = DES
ENCRYPTION BY ASYMMETRIC KEY SSN_AKey;
GO
--
--Add a column of encrypted data.
ALTER TABLE HumanResources.Employee
ADD EncryptedNationalIDNumber2 VARBINARY (128);
OPEN SYMMETRIC KEY SSN_Key_02 DECRYPTION BY ASYMMETRIC KEY SSN_AKey;
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber2 = EncryptByKey(Key_GUID('SSN_Key_02'), NationalIDNumber);
GO
--Close the key used to encrypt the data.
CLOSE SYMMETRIC KEY SSN_Key_02;
--
--There are two ways to decrypt the stored data.
--
--OPTION ONE, using DecryptByKey()
--1. Open the symmetric key.
--2. Decrypt the data.
--3. Close the symmetric key.
OPEN SYMMETRIC KEY SSN_Key_02 DECRYPTION BY ASYMMETRIC KEY SSN_AKey;
SELECT NationalIDNumber,
EncryptedNationalIDNumber2 AS 'Encrypted ID Number',
CONVERT (NVARCHAR, DecryptByKey(EncryptedNationalIDNumber2)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;
CLOSE SYMMETRIC KEY SSN_Key_02;
--OPTION TWO, using DECRYPTBYKEYAUTOASYMKEY()
SELECT NationalIDNumber,
EncryptedNationalIDNumber2 AS 'Encrypted ID Number',
CONVERT (NVARCHAR, DECRYPTBYKEYAUTOASYMKEY(AsymKey_ID('SSN_AKey'), NULL, EncryptedNationalIDNumber2)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;
GO