Aracılığıyla paylaş


DECRYPTBYKEYAUTOASYMKEY (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Bu işlev şifrelenmiş verilerin şifresini çözer. İlk olarak ayrı bir asimetrik anahtarla simetrik anahtarın şifresini çözer ve ardından şifrelenmiş verilerin şifresini ilk adımda ayıklanan simetrik anahtarla çözer.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

akey_ID

Simetrik anahtarı şifrelemek için kullanılan asimetrik anahtarın kimliği. akey_IDint veri türüne sahiptir.

akey_password

Asimetrik anahtarı koruyan parola. Veritabanı ana anahtarı (DMK) asimetrik özel anahtarı koruyorsa akey_password bir NULL değere sahip olabilir. akey_passwordbir nvarchar veri türüne sahiptir.

Ciphertext

Anahtarla şifrelenen veriler. şifre metnininbir varbinary veri türü vardır.

@ciphertext

Simetrik anahtarla şifrelenmiş verileri içeren değişken türünde bir değişken.

add_authenticator

Özgün şifreleme işleminin düz metinle birlikte bir kimlik doğrulayıcının eklenip eklenmediğini ve şifrelenip şifrelenmediğini gösterir. Veri şifreleme işlemi sırasında ENCRYPTBYKEY'e geçirilen değerle eşleşmelidir. şifreleme işlemi bir doğrulayıcı kullandıysa add_authenticator 1 değerine sahiptir. add_authenticatorint veri türüne sahiptir.

@add_authenticator

Özgün şifreleme işleminin düz metinle birlikte bir kimlik doğrulayıcının dahil edilip edilmediğini ve şifrelenip şifrelenmediğini gösteren değişken. Veri şifreleme işlemi sırasında ENCRYPTBYKEY'e geçirilen değerle eşleşmelidir. @add_authenticatorint veri türüne sahiptir.

Doğrulayıcı

Kimlik doğrulayıcının oluşturulması için temel olarak kullanılan veriler. ENCRYPTBYKEY ile sağlanan değerle eşleşmelidir. authenticator bir sysname veri türüne sahiptir.

@authenticator

Kimlik doğrulayıcının oluşturduğu verileri içeren değişken. ENCRYPTBYKEY ile sağlanan değerle eşleşmelidir. @authenticator bir sysname veri türüne sahiptir.

@add_authenticator

Özgün şifreleme işleminin düz metinle birlikte bir kimlik doğrulayıcının dahil edilip edilmediğini ve şifrelenip şifrelenmediğini gösteren değişken. Veri şifreleme işlemi sırasında ENCRYPTBYKEY'e geçirilen değerle eşleşmelidir. @add_authenticatorint veri türüne sahiptir.

Doğrulayıcı

Kimlik doğrulayıcının oluşturulması için temel olarak kullanılan veriler. ENCRYPTBYKEY ile sağlanan değerle eşleşmelidir. authenticator bir sysname veri türüne sahiptir.

@authenticator

Kimlik doğrulayıcının oluşturduğu verileri içeren değişken. ENCRYPTBYKEY ile sağlanan değerle eşleşmelidir. @authenticator bir sysname veri türüne sahiptir.

Dönüş türleri

en büyük boyutu 8.000 bayt olan varbinary.

Açıklamalar

DECRYPTBYKEYAUTOASYMKEYhem OPEN SYMMETRIC KEYhem de DECRYPTBYKEY işlevlerini birleştirir. Tek bir işlemde önce bir simetrik anahtarın şifresini çözer ve ardından şifrelenmiş şifreleme metninin şifresini bu anahtarla çözer.

Permissions

VIEW DEFINITION Simetrik anahtar üzerinde ve asimetrik anahtar CONTROL üzerinde izin gerektirir.

Örnekler

Bu örnekte şifre çözme kodunun nasıl DECRYPTBYKEYAUTOASYMKEY basitleştirebileceği gösterilmektedir. Bu kod, DMK'sı olmayan bir AdventureWorks2025 veritabanında çalıştırılmalıdır. değerini güçlü bir parolayla değiştirin <password> .

--Create the keys and certificate.
USE AdventureWorks2022;

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';

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