Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à :SQL Server
Azure SQL Managed Instance
Cette fonction déchiffre les données avec une clé symétrique. Cette clé symétrique est automatiquement déchiffrée avec un certificat.
Conventions de la syntaxe Transact-SQL
Syntaxe
DECRYPTBYKEYAUTOCERT ( cert_ID , cert_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Arguments
cert_ID
ID du certificat utilisé pour protéger la clé symétrique. cert_ID a le type de données int.
cert_password
Mot de passe utilisé pour chiffrer la clé privée du certificat. Peut avoir une NULL valeur si la clé principale de base de données (DMK) protège la clé privée.
cert_password a le type de données nvarchar.
'ciphertext'
Chaîne de données chiffrées avec la clé. ciphertext a le type de données varbinary.
@ciphertext
Variable de type varbinary contenant des données chiffrées avec la clé.
add_authenticator
Indique si le processus de chiffrement d’origine comprend et chiffre un authentificateur avec le texte en clair. Doit correspondre à la valeur passée à ENCRYPTBYKEY pendant le processus de chiffrement des données. add_authenticator a la valeur 1 si le processus de chiffrement utilise un authentificateur. add_authenticator a le type de données int.
@add_authenticator
Variable indiquant si le processus de chiffrement d’origine comprend et chiffre un authentificateur avec le texte en clair. Doit correspondre à la valeur passée à ENCRYPTBYKEY pendant le processus de chiffrement des données. @add_authenticator a le type de données int.
authenticator
Données utilisées comme base pour la génération de l’authentificateur. Doit correspondre à la valeur fournie à ENCRYPTBYKEY. authenticator a le type de données sysname.
@authenticator
Variable contenant des données à partir desquelles un authentificateur est généré. Doit correspondre à la valeur fournie à ENCRYPTBYKEY. @authenticator a le type de données sysname.
Types de retour
varbinary d’une taille maximale de 8 000 octets.
Notes
DECRYPTBYKEYAUTOCERT combine les fonctionnalités d’OPEN SYMMETRIC KEY et de DECRYPTBYKEY. Dans une même opération, il déchiffre d’abord une clé symétrique, puis déchiffre le texte chiffré avec cette clé.
Autorisations
Nécessite l’autorisation VIEW DEFINITION sur la clé symétrique et l’autorisation CONTROL sur le certificat.
Exemples
L’exemple suivant montre comment DECRYPTBYKEYAUTOCERT peut simplifier le code de déchiffrement. Ce code doit s’exécuter sur une AdventureWorks2025 base de données qui n’a pas encore de DMK. Remplacez par <password> un mot de passe fort.
--Create the keys and certificate.
USE AdventureWorks2022;
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';
CREATE CERTIFICATE HumanResources037
WITH SUBJECT = 'Sammamish HR', EXPIRY_DATE = '10/31/2035';
CREATE SYMMETRIC KEY SSN_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE HumanResources037;
GO
----Add a column of encrypted data.
ALTER TABLE HumanResources.Employee
ADD EncryptedNationalIDNumber VARBINARY (128);
OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037;
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO
--
--Close the key used to encrypt the data.
CLOSE SYMMETRIC KEY SSN_Key_01;
--
--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_01 DECRYPTION BY CERTIFICATE HumanResources037;
SELECT NationalIDNumber,
EncryptedNationalIDNumber AS 'Encrypted ID Number',
CONVERT (NVARCHAR, DecryptByKey(EncryptedNationalIDNumber)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;
CLOSE SYMMETRIC KEY SSN_Key_01;
--
--OPTION TWO, using DECRYPTBYKEYAUTOCERT()
SELECT NationalIDNumber,
EncryptedNationalIDNumber AS 'Encrypted ID Number',
CONVERT (NVARCHAR, DECRYPTBYKEYAUTOCERT(cert_ID('HumanResources037'), NULL, EncryptedNationalIDNumber)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;