Freigeben über


DECRYPTBYKEYAUTOASYMKEY (Transact-SQL)

Entschlüsselt Text mithilfe eines symmetrischen Schlüssels, der automatisch mithilfe eines asymmetrischen Schlüssels entschlüsselt wird.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

DecryptByKeyAutoAsymKey ( akey_ID , akey_password 
        , { 'ciphertext' | @ciphertext }
    [ , { add_authenticator | @add_authenticator } 
    [ , { authenticator | @authenticator } ] ] )

Argumente

  • akey_ID
    Die ID des asymmetrischen Schlüssels, der zum Schützen des symmetrischen Schlüssels verwendet wird. akey_ID ist vom Datentyp int.

  • akey_password
    Das Kennwort, durch das der private Schlüssel des asymmetrischen Schlüssels geschützt wird. Kann NULL sein, wenn der private Schlüssel durch den Hauptschlüssel für die Datenbank geschützt ist. akey_password ist vom Datentyp varchar.

  • 'ciphertext'
    Die mit dem Schlüssel verschlüsselten Daten. ciphertext ist vom Datentyp varbinary.

  • @ciphertext
    Eine Variable vom Datentyp varbinary, in der die mit dem Schlüssel verschlüsselten Daten enthalten sind.

  • add_authenticator
    Gibt an, ob zusammen mit dem Nur-Text auch ein Authentifikator verschlüsselt wurde. Dies muss derselbe Wert sein, der beim Verschlüsseln der Daten an EncryptByKey übergeben wurde. Hat den Wert 1, wenn ein Authentifikator verwendet wurde. add_authenticator ist vom Datentyp int.

  • @add_authenticator
    Gibt an, ob zusammen mit dem Nur-Text auch ein Authentifikator verschlüsselt wurde. Dies muss derselbe Wert sein, der beim Verschlüsseln der Daten an EncryptByKey übergeben wurde.

  • authenticator
    Die Daten, aus denen ein Authentifikator generiert werden soll. Dies muss derselbe Wert sein, der an EncryptByKey übergeben wurde. authenticator ist vom Datentyp sysname.

  • @authenticator
    Eine Variable mit den Daten, aus denen ein Authentifikator generiert werden soll. Dies muss derselbe Wert sein, der an EncryptByKey übergeben wurde.

Rückgabetypen

varbinary mit einer maximalen Größe von 8.000 Bytes.

Hinweise

In DecryptByKeyAutoAsymKey ist die Funktionalität von OPEN SYMMETRIC KEY und von DecryptByKey kombiniert. In einem einzelnen Vorgang wird ein symmetrischer Schlüssel entschlüsselt und mit diesem Schlüssel der verschlüsselte Text entschlüsselt.

Berechtigungen

Erfordert die VIEW DEFINITION-Berechtigung für den symmetrischen Schlüssel und die CONTROL-Berechtigung für den asymmetrischen Schlüssel.

Beispiele

Im folgenden Beispiel wird gezeigt, wie mit DecryptByKeyAutoAsymKey Code vereinfacht werden kann, mit dem eine Entschlüsselung ausgeführt wird. Der Code sollte für eine neu installierte Kopie der AdventureWorks-Datenbank ausgeführt werden.

--Create the keys and certificate.
USE AdventureWorks;
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