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 terenkripsi. Ini pertama-tama mendekripsi kunci konten dengan kunci asimetris terpisah, dan kemudian mendekripsi data terenkripsi dengan kunci konten yang diekstrak pada langkah pertama.
Sintaks
DECRYPTBYKEYAUTOASYMKEY ( akey_ID , akey_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Argumen
akey_ID
ID kunci asimetris yang digunakan untuk mengenkripsi kunci konten. akey_ID memiliki jenis data int.
akey_password
Kata sandi yang melindungi kunci asimetris.
akey_password dapat memiliki NULL nilai jika kunci master database (DMK) melindungi kunci privat asimetris.
akey_password memiliki jenis data nvarchar.
Ciphertext
Data yang dienkripsi dengan kunci. ciphertext memiliki jenis data varbinary .
@ciphertext
Variabel jenis varbinary yang berisi data yang dienkripsi dengan kunci konten.
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.
@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
DECRYPTBYKEYAUTOASYMKEY menggabungkan fungsionalitas dan OPEN SYMMETRIC KEYDECRYPTBYKEY. Dalam satu operasi, pertama-tama mendekripsi kunci konten, dan kemudian mendekripsi ciphertext terenkripsi dengan kunci tersebut.
Izin
Memerlukan izin pada kunci konten, dan VIEW DEFINITION izin pada kunci asimetrisCONTROL.
Contoh
Contoh ini menunjukkan cara DECRYPTBYKEYAUTOASYMKEY 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 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