Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Managed Instance
Ta funkcja odszyfrowuje zaszyfrowane dane. Najpierw odszyfrowuje klucz symetryczny z oddzielnym kluczem asymetrycznym, a następnie odszyfrowuje zaszyfrowane dane przy użyciu klucza symetrycznego wyodrębnionego w pierwszym kroku.
Transact-SQL konwencje składni
Składnia
DECRYPTBYKEYAUTOASYMKEY ( akey_ID , akey_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Arguments
akey_ID
Identyfikator klucza asymetrycznego używanego do szyfrowania klucza symetrycznego. akey_ID ma typ danych int .
akey_password
Hasło chroniące klucz asymetryczny.
akey_password może mieć NULL wartość, jeśli klucz główny bazy danych (DMK) chroni asymetryczny klucz prywatny.
akey_password ma typ danych nvarchar .
szyfrogram
Dane zaszyfrowane za pomocą klucza. Ciphertext ma typ danych varbinary .
@ciphertext
Zmienna typu varbinary zawierająca dane zaszyfrowane za pomocą klucza symetrycznego.
add_authenticator
Wskazuje, czy oryginalny proces szyfrowania zawiera i zaszyfrowany moduł uwierzytelniania wraz z zwykły tekst. Musi być zgodna z wartością przekazaną do funkcji ENCRYPTBYKEY podczas procesu szyfrowania danych. add_authenticator ma wartość 1, jeśli proces szyfrowania używał wystawcy uwierzytelnienia. add_authenticator ma typ danych int .
@add_authenticator
Zmienna wskazująca, czy oryginalny proces szyfrowania obejmował i zaszyfrował uwierzytelnianie razem z zwykły tekst. Musi być zgodna z wartością przekazaną do funkcji ENCRYPTBYKEY podczas procesu szyfrowania danych. @add_authenticator ma typ danych int .
Wystawca uwierzytelnienia
Dane używane jako podstawa generowania wystawcy uwierzytelnienia. Musi być zgodna z wartością podaną w parametrze ENCRYPTBYKEY. Wystawca authenticator ma typ danych sysname .
@authenticator
Zmienna zawierająca dane, z których generuje wystawca uwierzytelnienia. Musi być zgodna z wartością podaną w parametrze ENCRYPTBYKEY. @authenticator ma typ danych sysname .
@add_authenticator
Zmienna wskazująca, czy oryginalny proces szyfrowania obejmował i zaszyfrował uwierzytelnianie razem z zwykły tekst. Musi być zgodna z wartością przekazaną do funkcji ENCRYPTBYKEY podczas procesu szyfrowania danych. @add_authenticator ma typ danych int .
Wystawca uwierzytelnienia
Dane używane jako podstawa generowania wystawcy uwierzytelnienia. Musi być zgodna z wartością podaną w parametrze ENCRYPTBYKEY. Wystawca authenticator ma typ danych sysname .
@authenticator
Zmienna zawierająca dane, z których generuje wystawca uwierzytelnienia. Musi być zgodna z wartością podaną w parametrze ENCRYPTBYKEY. @authenticator ma typ danych sysname .
Typy zwracane
varbinary o maksymalnym rozmiarze 8000 bajtów.
Uwagi
DECRYPTBYKEYAUTOASYMKEY łączy funkcje zarówno funkcji , jak OPEN SYMMETRIC KEY i DECRYPTBYKEY. W ramach jednej operacji najpierw odszyfrowuje klucz symetryczny, a następnie odszyfrowuje zaszyfrowany tekst szyfrowania za pomocą tego klucza.
Permissions
Wymaga VIEW DEFINITION uprawnień do klucza symetrycznego i CONTROL uprawnienia do klucza asymetrycznego.
Przykłady
W tym przykładzie pokazano, jak DECRYPTBYKEYAUTOASYMKEY uprościć kod odszyfrowywania. Ten kod powinien być uruchamiany w AdventureWorks2025 bazie danych, która nie ma jeszcze zestawu DMK. Zastąp <password> ciąg silnym hasłem.
--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