Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server
Azure SQL Managed Instance
Fungsi ini mendekripsi data dengan kunci konten. Kunci konten tersebut secara otomatis mendekripsi dengan sertifikat.
Sintaks
DECRYPTBYKEYAUTOCERT ( cert_ID , cert_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Argumen
cert_ID
ID sertifikat yang digunakan untuk melindungi kunci konten. cert_ID memiliki jenis data int.
cert_password
Kata sandi yang digunakan untuk mengenkripsi kunci privat sertifikat. Dapat memiliki NULL nilai jika kunci master database (DMK) melindungi kunci privat.
cert_password memiliki jenis data nvarchar.
'ciphertext'
String data yang dienkripsi dengan kunci. ciphertext memiliki jenis data varbinary .
@ciphertext
Variabel jenis varbinary yang berisi data yang dienkripsi dengan kunci.
add_authenticator
Menunjukkan apakah proses enkripsi asli disertakan, dan dienkripsi, pengautentikasi bersama dengan teks biasa. Harus sesuai dengan nilai yang diteruskan ke ENCRYPTBYKEY selama proses enkripsi data. add_authenticator memiliki nilai 1 jika proses enkripsi menggunakan pengautentikasi. add_authenticator memiliki jenis data int.
@add_authenticator
Variabel yang menunjukkan apakah proses enkripsi asli disertakan, dan dienkripsi, pengautentikasi bersama dengan teks biasa. Harus sesuai dengan nilai yang diteruskan ke ENCRYPTBYKEY selama proses enkripsi data. @add_authenticator memiliki jenis data int.
Authenticator
Data yang digunakan sebagai dasar untuk pembuatan pengautentikasi. Harus cocok dengan nilai yang disediakan ke ENCRYPTBYKEY. authenticator memiliki jenis data sysname .
@authenticator
Variabel yang berisi data dari mana pengautentikasi dihasilkan. Harus cocok dengan nilai yang disediakan ke ENCRYPTBYKEY. @authenticator memiliki jenis data sysname.
Tipe pengembalian
varbinary, dengan ukuran maksimum 8.000 byte.
Keterangan
DECRYPTBYKEYAUTOCERT menggabungkan fungsionalitas dan OPEN SYMMETRIC KEYDECRYPTBYKEY. Dalam satu operasi, pertama-tama mendekripsi kunci konten, dan kemudian mendekripsi ciphertext terenkripsi dengan kunci tersebut.
Izin
VIEW DEFINITION Memerlukan izin pada kunci konten, dan CONTROL izin pada sertifikat.
Contoh
Contoh ini menunjukkan cara DECRYPTBYKEYAUTOCERT menyederhanakan kode dekripsi. Kode ini harus berjalan pada AdventureWorks2025 database yang belum memiliki DMK. Ganti <password> dengan kata sandi yang kuat.
--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;