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.
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk