Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
Bu işlev, simetrik bir anahtarla verilerin şifresini çözer. Bu simetrik anahtarın şifresi otomatik olarak bir sertifikayla çözülür.
Transact-SQL söz dizimi kuralları
Sözdizimi
DECRYPTBYKEYAUTOCERT ( cert_ID , cert_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Arguments
cert_ID
Simetrik anahtarı korumak için kullanılan sertifikanın kimliği. cert_IDint veri türüne sahiptir.
cert_password
Sertifikanın özel anahtarını şifrelemek için kullanılan parola. Veritabanı ana anahtarı (DMK) özel anahtarı koruyorsa bir NULL değere sahip olabilir.
cert_passwordbir nvarchar veri türüne sahiptir.
'şifre metni'
Anahtarla şifrelenen veri dizesi. şifre metnininbir varbinary veri türü vardır.
@ciphertext
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.
Dönüş türleri
en büyük boyutu 8.000 bayt olan varbinary.
Açıklamalar
DECRYPTBYKEYAUTOCERTve OPEN SYMMETRIC KEYişlevlerini DECRYPTBYKEY 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 CONTROL üzerinde ve sertifika üzerinde izin gerektirir.
Örnekler
Bu örnekte şifre çözme kodunun nasıl DECRYPTBYKEYAUTOCERT 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 CERTIFICATE HumanResources037
WITH SUBJECT = 'Sammamish HR', EXPIRY_DATE = '10/31/2035';
CREATE SYMMETRIC KEY SSN_Key_01
WITH ALGORITHM = AES_256
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;