Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Met deze functie worden versleutelde gegevens ontsleuteld. Eerst ontsleutelt het een symmetrische sleutel met een afzonderlijke asymmetrische sleutel en ontsleutelt vervolgens de versleutelde gegevens met de symmetrische sleutel die in de eerste stap is geëxtraheerd.
Transact-SQL syntaxis-conventies
Syntaxis
DECRYPTBYKEYAUTOASYMKEY ( akey_ID , akey_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Arguments
akey_ID
De id van de asymmetrische sleutel die wordt gebruikt voor het versleutelen van de symmetrische sleutel. akey_ID heeft een gegevenstype int .
akey_password
Het wachtwoord dat de asymmetrische sleutel beveiligt.
akey_password kan een NULL waarde hebben als de databasehoofdsleutel (DMK) de asymmetrische persoonlijke sleutel beveiligt.
akey_password heeft een nvarchar-gegevenstype .
coderingstekst
De gegevens die zijn versleuteld met de sleutel. ciphertext heeft een varbinary-gegevenstype .
@ciphertext
Een variabele van het type varbinary die gegevens bevat die zijn versleuteld met de symmetrische sleutel.
add_authenticator
Geeft aan of het oorspronkelijke versleutelingsproces is opgenomen en versleuteld, een verificator samen met de tekst zonder opmaak. Moet overeenkomen met de waarde die is doorgegeven aan ENCRYPTBYKEY tijdens het gegevensversleutelingsproces. add_authenticator heeft de waarde 1 als het versleutelingsproces een verificator heeft gebruikt. add_authenticator heeft een gegevenstype int .
@add_authenticator
Een variabele die aangeeft of het oorspronkelijke versleutelingsproces is opgenomen en versleuteld, een verificator samen met de tekst zonder opmaak. Moet overeenkomen met de waarde die is doorgegeven aan ENCRYPTBYKEY tijdens het gegevensversleutelingsproces. @add_authenticator heeft een gegevenstype int .
Verificator
De gegevens die worden gebruikt als basis voor het genereren van de verificator. Moet overeenkomen met de waarde die is opgegeven aan ENCRYPTBYKEY. authenticator heeft een sysname-gegevenstype .
@authenticator
Een variabele met gegevens waaruit een verificator genereert. Moet overeenkomen met de waarde die is opgegeven aan ENCRYPTBYKEY. @authenticator heeft een sysname-gegevenstype .
@add_authenticator
Een variabele die aangeeft of het oorspronkelijke versleutelingsproces is opgenomen en versleuteld, een verificator samen met de tekst zonder opmaak. Moet overeenkomen met de waarde die is doorgegeven aan ENCRYPTBYKEY tijdens het gegevensversleutelingsproces. @add_authenticator heeft een gegevenstype int .
Verificator
De gegevens die worden gebruikt als basis voor het genereren van de verificator. Moet overeenkomen met de waarde die is opgegeven aan ENCRYPTBYKEY. authenticator heeft een sysname-gegevenstype .
@authenticator
Een variabele met gegevens waaruit een verificator genereert. Moet overeenkomen met de waarde die is opgegeven aan ENCRYPTBYKEY. @authenticator heeft een sysname-gegevenstype .
Retourtypen
varbinary, met een maximale grootte van 8.000 bytes.
Opmerkingen
DECRYPTBYKEYAUTOASYMKEY combineert de functionaliteit van zowel OPEN SYMMETRIC KEY als DECRYPTBYKEY. In één bewerking ontsleutelt deze eerst een symmetrische sleutel en ontsleutelt vervolgens versleutelde coderingstekst met die sleutel.
Permissions
Hiervoor is toestemming vereist VIEW DEFINITION voor de symmetrische sleutel en CONTROL de machtiging voor de asymmetrische sleutel.
Voorbeelden
In dit voorbeeld ziet u hoe DECRYPTBYKEYAUTOASYMKEY u ontsleutelingscode kunt vereenvoudigen. Deze code moet worden uitgevoerd op een AdventureWorks2022 database die nog geen DMK heeft. Vervang <password> door een sterk wachtwoord.
--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