DecryptByKeyAutoAsymKey (Transact-SQL)
Nouveau : 14 avril 2006
Déchiffre à l'aide d'une clé symétrique automatiquement déchiffrée à l'aide d'une clé asymétrique.
Conventions de la syntaxe de Transact-SQL
Syntaxe
DecryptByKeyAutoAsymKey
( akey_ID , akey_password , { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ]
]
)
Arguments
- akey_ID
ID de la clé asymétrique utilisée pour protéger la clé symétrique. int.
- akey_password
Mot de passe qui protège la clé privée de la clé asymétrique. Peut être NULL si la clé privée est protégée par la clé principale de la base de données. varchar.
- 'ciphertext'
Données qui ont été chiffrées avec la clé. varbinary.
- @ciphertext
Variable de type varbinary contenant des données qui ont été chiffrées avec la clé.
- add_authenticator
Indique si un authentificateur a été chiffré en même temps que le texte en clair. Il doit s'agir de la valeur transmise à EncryptByKey lors du chiffrement des données. La valeur est 1 si un authentificateur a été utilisé. int.
- @add_authenticator
Indique si un authentificateur a été chiffré en même temps que le texte en clair. Il doit s'agir de la valeur transmise à EncryptByKey lors du chiffrement des données.
- authenticator
Données à partir desquelles un authentificateur peut être généré. Doit correspondre à la valeur qui a été fournie à EncryptByKey. sysname.
- @authenticator
Variable contenant les données à partir desquelles l'authentificateur sera généré. Doit correspondre à la valeur qui a été fournie à EncryptByKey.
Notes
DecryptByKeyAutoAsymKey combine les fonctionnalités de OPEN SYMMETRIC KEY et de DecryptByKey. Dans une même opération, il déchiffre une clé symétrique et l'utilise pour déchiffrer le texte chiffré.
Autorisations
Nécessite l'appartenance au rôle public.
Types renvoyés
Variable binaire varbinary de 8 000 octets au maximum.
Exemples
L'exemple suivant montre comment utiliser DecryptByKeyAutoAsymKey pour simplifier du code qui effectue un déchiffrement. Ce code doit être exécuté sur une copie nouvellement installée de la base de données AdventureWorks.
--Create the keys and certificate.
USE AdventureWorks;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mzkvdMlk979438teag$$ds987yghn)(*&4fdg^';
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'mzkvdMlk979438teag$$ds987yghn)(*&4fdg^';
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
Voir aussi
Référence
OPEN SYMMETRIC KEY (Transact-SQL)
EncryptByKey (Transact-SQL)
DecryptByKey (Transact-SQL)