Compartilhar via


DECRYPTBYKEYAUTOASYMKEY (Transact-SQL)

Descriptografa usando uma chave simétrica que é automaticamente descriptografada com uma chave assimétrica.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • akey_ID
    É a ID da chave assimétrica usada para proteger a chave simétrica. akey_ID é int.

  • akey_password
    É a senha que protege a chave privada da chave assimétrica. Poderá ser NULL se a chave privada estiver protegida pela chave mestra do banco de dados. akey_password é varchar.

  • 'ciphertext'
    São os dados criptografados com a chave. ciphertext é varbinary.

  • @ciphertext
    É uma variável do tipo varbinary que contém dados criptografados com a chave.

  • add_authenticator
    Indica se um autenticador foi criptografado junto com o texto não criptografado. Deve ser igual ao valor que é passado para EncryptByKey ao criptografar dados. Será 1 se foi usado um autenticador. add_authenticator é int.

  • @add_authenticator
    Indica se um autenticador foi criptografado junto com o texto não criptografado. Deve ser igual ao valor que é passado para EncryptByKey ao criptografar os dados.

  • authenticator
    São os dados a partir dos quais um autenticador é gerado. Deve corresponder ao valor fornecido para EncryptByKey. authenticator é sysname.

  • @authenticator
    É uma variável que contém dados a partir dos quais um autenticador é gerado. Deve corresponder ao valor fornecido para EncryptByKey.

Tipos de retorno

varbinary com um tamanho máximo de 8.000 bytes.

Comentários

DecryptByKeyAutoAsymKey combina a funcionalidade de OPEN SYMMETRIC KEY e DecryptByKey. Em uma única operação, ele descriptografa uma chave simétrica e a utiliza para descriptografar texto cifrado.

Permissões

Requer a permissão VIEW DEFINITION na chave simétrica e a permissão CONTROL na chave assimétrica.

Exemplos

O exemplo a seguir mostra como DecryptByKeyAutoAsymKey pode ser usado para simplificar código que executa uma descriptografia. Esse código deve ser executado em um banco de dados AdventureWorks2008R2 que ainda não tenha uma chave mestra de banco de dados.

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