Megosztás a következőn keresztül:


DECRYPTBYKEYAUTOCERT (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL Managed Instance

Ez a függvény szimmetrikus kulccsal fejti vissza az adatokat. Ez a szimmetrikus kulcs automatikusan visszafejt egy tanúsítvánnyal.

Transact-SQL szintaxis konvenciók

Szemantika

DECRYPTBYKEYAUTOCERT ( cert_ID , cert_password
    , { 'ciphertext' | @ciphertext }
  [ , { add_authenticator | @add_authenticator }
  [ , { authenticator | @authenticator } ] ] )

Arguments

cert_ID

A szimmetrikus kulcs védelmére használt tanúsítvány azonosítója. cert_IDint adattípussal rendelkezik.

cert_password

A tanúsítvány titkos kulcsának titkosításához használt jelszó. Akkor lehet NULL érték, ha az adatbázis főkulcsa (DMK) védi a titkos kulcsot. cert_passwordnvarchar adattípussal rendelkezik.

"ciphertext"

A kulccsal titkosított adatok sztringje. a rejtjelszövegvarbináris adattípussal rendelkezik.

@ciphertext

A kulccsal titkosított adatokat tartalmazó varbináris típusú változó.

add_authenticator

Azt jelzi, hogy az eredeti titkosítási folyamat tartalmazott-e és titkosított-e egy hitelesítőt az egyszerű szöveggel együtt. Az adattitkosítási folyamat során meg kell egyeznie a ENCRYPTBYKEY-nek átadott értékkel. add_authenticator értéke 1, ha a titkosítási folyamat hitelesítőt használt. add_authenticatorint adattípussal rendelkezik.

@add_authenticator

Egy változó, amely azt jelzi, hogy az eredeti titkosítási folyamat tartalmazott-e és titkosított-e egy hitelesítőt az egyszerű szöveggel együtt. Az adattitkosítási folyamat során meg kell egyeznie a ENCRYPTBYKEY-nek átadott értékkel. @add_authenticatorint adattípussal rendelkezik.

Hitelesítő

A hitelesítő létrehozásának alapjaként használt adatok. Meg kell egyeznie a ENCRYPTBYKEY-nek megadott értékkel. az authenticatorsysname adattípussal rendelkezik.

@authenticator

Olyan változó, amely olyan adatokat tartalmaz, amelyekből egy hitelesítő létrehoz. Meg kell egyeznie a ENCRYPTBYKEY-nek megadott értékkel. @authenticatorsysname adattípussal rendelkezik.

Visszatérési típusok

varbinary, legfeljebb 8000 bájt mérettel.

Megjegyzések

DECRYPTBYKEYAUTOCERT a és a .2010 OPEN SYMMETRIC KEYDECRYPTBYKEYfunkcióját egyesíti. Egyetlen műveletben először visszafejt egy szimmetrikus kulcsot, majd visszafejti a titkosított rejtjelszöveget ezzel a kulccsal.

Permissions

A szimmetrikus kulcsra és VIEW DEFINITION a tanúsítványra vonatkozó engedélyre van szükségCONTROL.

Példák

Ez a példa bemutatja, hogyan DECRYPTBYKEYAUTOCERT egyszerűsíthető a visszafejtési kód. Ennek a kódnak olyan AdventureWorks2025 adatbázisban kell futnia, amely még nem rendelkezik DMK-val. Cserélje le <password> erős jelszóra.

--Create the keys and certificate.
USE AdventureWorks2022;

CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';

OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';

CREATE CERTIFICATE HumanResources037
    WITH SUBJECT = 'Sammamish HR', EXPIRY_DATE = '10/31/2035';

CREATE SYMMETRIC KEY SSN_Key_01
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE HumanResources037;
GO

----Add a column of encrypted data.
ALTER TABLE HumanResources.Employee
    ADD EncryptedNationalIDNumber VARBINARY (128);

OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037;

UPDATE HumanResources.Employee
    SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO

--
--Close the key used to encrypt the data.
CLOSE SYMMETRIC KEY SSN_Key_01;
--
--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_01 DECRYPTION BY CERTIFICATE HumanResources037;

SELECT NationalIDNumber,
       EncryptedNationalIDNumber AS 'Encrypted ID Number',
       CONVERT (NVARCHAR, DecryptByKey(EncryptedNationalIDNumber)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;

CLOSE SYMMETRIC KEY SSN_Key_01;
--
--OPTION TWO, using DECRYPTBYKEYAUTOCERT()

SELECT NationalIDNumber,
       EncryptedNationalIDNumber AS 'Encrypted ID Number',
       CONVERT (NVARCHAR, DECRYPTBYKEYAUTOCERT(cert_ID('HumanResources037'), NULL, EncryptedNationalIDNumber)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;