Bagikan melalui


DECRYPTBYKEYAUTOASYMKEY (Transact-SQL)

Berlaku untuk: SQL Server Azure SQL Managed Instance

Fungsi ini mendekripsi data terenkripsi. Untuk melakukan ini, pertama-tama mendekripsi kunci konten dengan kunci asimetris terpisah, dan kemudian mendekripsi data terenkripsi dengan kunci konten yang diekstrak di "langkah" pertama.

Konvensi sintaks transact-SQL

Sintaksis

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

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 nilai NULL jika kunci master database 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 (Transact-SQL) 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 (Transact-SQL) 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 (Transact-SQL). authenticator memiliki jenis data sysname .

@authenticator
Variabel yang berisi data dari mana pengautentikasi dihasilkan. Harus cocok dengan nilai yang disediakan ke ENCRYPTBYKEY (Transact-SQL). @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 (Transact-SQL) 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 (Transact-SQL). authenticator memiliki jenis data sysname .

@authenticator
Variabel yang berisi data dari mana pengautentikasi dihasilkan. Harus cocok dengan nilai yang disediakan ke ENCRYPTBYKEY (Transact-SQL). @authenticator memiliki jenis data sysname.

Jenis Kembalian

varbinary, dengan ukuran maksimum 8.000 byte.

Keterangan

DECRYPTBYKEYAUTOASYMKEY menggabungkan fungsionalitas dan OPEN SYMMETRIC KEY DECRYPTBYKEY. Dalam satu operasi, pertama-tama mendekripsi kunci konten, dan kemudian mendekripsi ciphertext terenkripsi dengan kunci tersebut.

Izin

Memerlukan izin pada kunci konten, dan CONTROL izin pada kunci asimetrisVIEW DEFINITION.

Contoh

Contoh ini menunjukkan cara DECRYPTBYKEYAUTOASYMKEY menyederhanakan kode dekripsi. Kode ini harus berjalan pada AdventureWorks2022 database yang belum memiliki kunci master database.

--Create the keys and certificate.  
USE AdventureWorks2022;  
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  

Lihat Juga

BUKA KUNCI KONTEN (Transact-SQL)
ENCRYPTBYKEY (Transact-SQL)
DECRYPTBYKEY (Transact-SQL)
Hierarki Enkripsi