DECRYPTBYKEY (Transact-SQL)
Decifra dados usando uma chave simétrica.
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