decryptbykeyautocert (Transact-SQL)
Bir sertifikaile otomatik olarak çözülür bir simetrik anahtar kullanarak şifresini çözer.
Sözdizimi
DecryptByKeyAutoCert ( cert_ID , cert_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Bağımsız değişkenler
cert_ID
Simetrik anahtarkorumak için kullanılan sertifika kimliğidir.cert_IDis int.cert_password
sertifikaözel anahtar koruyan paroladır.Özel anahtar veritabanı ana anahtartarafından korunan null olabilir.cert_passwordis varchar.'ciphertext'
' % S'anahtar anahtarile şifrelenmiş verilerdir.ciphertextis varbinary.@ haline
Türünde bir değişken olan varbinary ' % s'anahtar anahtarile şifrelenmiş verileri içeren.add_authenticator
Bir doğrulayıcı ile birlikte düz metinşifrelenmiş olup olmadığını gösterir.EncryptByKey için veri şifrelerken geçirilen değerin olması gerekir.Olan 1 bir doğrulayıcı kullandıysanız.add_authenticatoris int.@ add_authenticator
Bir doğrulayıcı ile birlikte düz metinşifrelenmiş olup olmadığını gösterir.EncryptByKey için veri şifrelerken geçirilen değerin olması gerekir.authenticator
Gelen bir doğrulayıcıoluşturmak veri içerir.EncryptByKey için sağlanan değerin eşleşmesi gerekir.authenticatoris sysname.doğrulayıcı@
Gelen bir doğrulayıcıoluşturmak verileri içeren bir değişkendir.EncryptByKey için sağlanan değerin eşleşmesi gerekir.
Dönüş Türleri
varbinaryen çok 8.000 bayt boyutunu ile.
Açıklamalar
DecryptByKeyAutoCert açık bir SİMETRİK anahtar ve DecryptByKey işlevselliğini birleştirir.Tek bir işlemde, bir simetrik anahtar şifresini çözer ve şifre metin şifresini çözmek için anahtar kullanır.
İzinler
Görünüm TANIMINI izni simetrik anahtar ve sertifikacontrol izni gerektirir.
Örnekler
Aşağıdaki örnekte gösterildiği nasıl DecryptByKeyAutoCert için basitleştirmek kod, gerçekleştirdiği bir şifre çözme.Bu kod çalışması gereken bir AdventureWorks2008R2 veritabanı ana anahtarhenüz veritabanına.
--Create the keys and certificate.
USE AdventureWorks2008R2;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'mzkvdlk979438teag$$ds987yghn)(*&4fdg^';
OPEN MASTER KEY DECRYPTION BY PASSWORD = 'mzkvdlk979438teag$$ds987yghn)(*&4fdg^';
CREATE CERTIFICATE HumanResources037
WITH SUBJECT = 'Sammamish HR',
EXPIRY_DATE = '10/31/2009';
CREATE SYMMETRIC KEY SSN_Key_01 WITH ALGORITHM = DES
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;