Aracılığıyla paylaş


decryptbykeyautocert (Transact-SQL)

Bir sertifikaile otomatik olarak çözülür bir simetrik anahtar kullanarak şifresini çözer.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

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;