Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Den här funktionen dekrypterar krypterade data. Den dekrypterar först en symmetrisk nyckel med en separat asymmetrisk nyckel och dekrypterar sedan krypterade data med den symmetriska nyckel som extraherades i det första steget.
Transact-SQL syntaxkonventioner
Syntax
DECRYPTBYKEYAUTOASYMKEY ( akey_ID , akey_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Arguments
akey_ID
ID:t för den asymmetriska nyckel som används för att kryptera den symmetriska nyckeln. akey_ID har en int-datatyp .
akey_password
Lösenordet som skyddar den asymmetriska nyckeln.
akey_password kan ha ett NULL värde om databashuvudnyckeln (DMK) skyddar den asymmetriska privata nyckeln.
akey_password har en nvarchar-datatyp .
chiffertext
Data som krypterats med nyckeln. chiffertext har en varbinär datatyp.
@ciphertext
En variabel av typen varbinary som innehåller data krypterade med den symmetriska nyckeln.
add_authenticator
Anger om den ursprungliga krypteringsprocessen inkluderade och krypterade en autentisering tillsammans med klartext. Måste matcha värdet som skickades till ENCRYPTBYKEY under datakrypteringsprocessen. add_authenticator har värdet 1 om krypteringsprocessen använde en autentisering. add_authenticator har en int-datatyp .
@add_authenticator
En variabel som anger om den ursprungliga krypteringsprocessen inkluderade och krypterade en autentisering tillsammans med klartext. Måste matcha värdet som skickades till ENCRYPTBYKEY under datakrypteringsprocessen. @add_authenticator har en int-datatyp .
autentiserare
De data som används som grund för autentiseringsgenereringen. Måste matcha värdet som anges till ENCRYPTBYKEY. authenticator har en datatyp för sysname .
@authenticator
En variabel som innehåller data som en autentiseringsutent genererar från. Måste matcha värdet som anges till ENCRYPTBYKEY. @authenticator har datatypen sysname .
@add_authenticator
En variabel som anger om den ursprungliga krypteringsprocessen inkluderade och krypterade en autentisering tillsammans med klartext. Måste matcha värdet som skickades till ENCRYPTBYKEY under datakrypteringsprocessen. @add_authenticator har en int-datatyp .
autentiserare
De data som används som grund för autentiseringsgenereringen. Måste matcha värdet som anges till ENCRYPTBYKEY. authenticator har en datatyp för sysname .
@authenticator
En variabel som innehåller data som en autentiseringsutent genererar från. Måste matcha värdet som anges till ENCRYPTBYKEY. @authenticator har datatypen sysname .
Returtyper
varbinary, med en maximal storlek på 8 000 byte.
Anmärkningar
DECRYPTBYKEYAUTOASYMKEY kombinerar funktionerna i både OPEN SYMMETRIC KEY och DECRYPTBYKEY. I en enda åtgärd dekrypterar den först en symmetrisk nyckel och dekrypterar sedan krypterad chiffertext med den nyckeln.
Permissions
Kräver VIEW DEFINITION behörighet för den symmetriska nyckeln och CONTROL behörighet för den asymmetriska nyckeln.
Examples
Det här exemplet visar hur DECRYPTBYKEYAUTOASYMKEY du kan förenkla dekrypteringskoden. Den här koden ska köras på en AdventureWorks2022 databas som inte redan har en DMK. Ersätt <password> med ett starkt lösenord.
--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