Partilhar via


DECRYPTBYKEY (Transact-SQL)

Decifra dados usando uma chave simétrica.

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

Sintaxe

DecryptByKey ( { 'ciphertext' | @ciphertext } 
    [ , add_authenticator, { authenticator | @authenticator } ] )

Argumentos

  • ciphertext
    São os dados que foram 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 passado para EncryptByKey durante a criptografia dos dados. add_authenticator é int.

  • 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 a EncryptByKey.

Tipos de retorno

varbinary com no máximo 8.000 bytes.

Comentários

DecryptByKey usa uma chave simétrica. Essa chave simétrica já deve estar aberta no banco de dados. Podem haver várias chaves abertas ao mesmo tempo. Não é necessário abrir a chave imediatamente antes de descriptografar o texto de codificado.

A criptografia e descriptografia simétrica é relativamente rápida e adequada para trabalhar com grandes quantidades de dados.

Permissões

Requer que a chave simétrica tenha sido aberta na sessão atual. Para obter mais informações, consulte OPEN SYMMETRIC KEY (Transact-SQL).

Exemplos

A. Descriptografando com o uso de uma chave simétrica

O exemplo a seguir descriptografa texto codificado usando uma chave simétrica.

-- First, open the symmetric key with which to decrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
   DECRYPTION BY CERTIFICATE HumanResources037;
GO

-- Now list the original ID, the encrypted ID, and the 
-- decrypted ciphertext. If the decryption worked, the original
-- and the decrypted ID will match.
SELECT NationalIDNumber, EncryptedNationalID 
    AS 'Encrypted ID Number',
    CONVERT(nvarchar, DecryptByKey(EncryptedNationalID)) 
    AS 'Decrypted ID Number'
    FROM HumanResources.Employee;
GO

B. Descriptografando com o uso de uma chave simétrica e um hash autenticando

O exemplo a seguir descriptografa dados que foram criptografados junto com um autenticador.

-- First, open the symmetric key with which to decrypt the data
OPEN SYMMETRIC KEY CreditCards_Key11
   DECRYPTION BY CERTIFICATE Sales09;
GO

-- Now list the original card number, the encrypted card number,
-- and the decrypted ciphertext. If the decryption worked, 
-- the original number will match the decrypted number.
SELECT CardNumber, CardNumber_Encrypted 
    AS 'Encrypted card number', CONVERT(nvarchar,
    DecryptByKey(CardNumber_Encrypted, 1 , 
    HashBytes('SHA1', CONVERT(varbinary, CreditCardID)))) 
    AS 'Decrypted card number' FROM Sales.CreditCard;
GO