Aracılığıyla paylaş


DECRYPTBYKEYAUTOASYMKEY (Transact-SQL)

Bir asimetrik anahtar kullanılarak otomatik olarak şifresi çözülmüş olan bir simetrik anahtar kullanılarak şifresini çözer.

Topic link iconTransact-SQL sözdizimi kuralları

DecryptByKeyAutoAsymKey ( akey_ID , akey_password 
        , { 'ciphertext' | @ciphertext }
    [ , { add_authenticator | @add_authenticator } 
    [ , { authenticator | @authenticator } ] ] )

Bağımsız değişkenler

  • akey_ID
    Is the ID of the asymmetric key that is used to protect the symmetric key.akey_ID is int.

  • akey_password
    Asimetrik anahtar özel anahtarını koruyan paroladır.Can be NULL if the private key is protected by the database master key.akey_password is varchar.

  • 'ciphertext'
    Is the data that was encrypted with the key.ciphertext is varbinary.

  • @ ciphertext
    Türünde bir değişken mi varbinary Ortak anahtar ile şifrelenmiş veriyi içerir.

  • add_authenticator
    Düz metin'ile birlikte bir doğrulayıcı şifrelenmiş olup olmadığını gösterir.Veri şifrelerken geçirilen EncryptByKey için aynı değeri olmalıdır.Is 1 if an authenticator was used.add_authenticator is int.

  • @ add_authenticator
    Düz metin'ile birlikte bir doğrulayıcı şifrelenmiş olup olmadığını gösterir.Veri şifrelerken geçirilen EncryptByKey için aynı değeri olmalıdır.

  • authenticator
    Bir doğrulayıcı oluşturmak içinden veridir.Must match the value that was supplied to EncryptByKey.authenticator is sysname.

  • doğrulayıcı'nın
    Bir doğrulayıcı oluşturmak istediğiniz verileri içeren değişken belirtilir.EncryptByKey için sağlanan değerin eşleşmesi gerekir.

Dönüş Türleri

varbinary bir en büyük boyutu çok 8.000 bayt ile.

Remarks

DecryptByKeyAutoAsymKey OPEN SIMETRIK ANAHTAR ve DecryptByKey birleştirir.Tek bir işlemle, bir simetrik anahtarın şifresini çözer ve ciphertext şifresini çözmek için bu anahtar kullanır.

İzinler

Gerektirir GÖRÜNÜM TANIMI simetrik anahtar ve izniDenetim izni asimetrik anahtar.

Örnekler

Aşağıdaki örnek, DecryptByKeyAutoAsymKey bir şifre çözme yapan kodunu basitleştirmek için nasıl kullanılabileceğini gösterir.Bu kod, freshly yüklenmiş bir kopyasını çalıştırmalısınız AdventureWorks veritabanıdır.

--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