Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Esta função descriptografa dados criptografados. Primeiro, descriptografa uma chave simétrica com uma chave assimétrica separada e descriptografa os dados criptografados com a chave simétrica extraída na primeira etapa.
Convenções de sintaxe de 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 criptografar a chave simétrica. akey_ID tem um tipo de dados int.
akey_password
A senha que protege a chave assimétrica.
akey_password pode ter um NULL valor se a DMK (chave mestra do banco de dados) proteger a chave privada assimétrica.
akey_password tem um tipo de dados nvarchar.
ciphertext
Os dados criptografados com a chave. ciphertext tem um tipo de dados varbinary.
@ciphertext
Uma variável do tipo varbinary que contém dados criptografados com a chave simétrica.
add_authenticator
Indica se o processo de criptografia original incluía, e criptografava, um autenticador junto com o texto não criptografado. Deve corresponder ao valor passado para ENCRYPTBYKEY durante o processo de criptografia de dados. add_authenticator teria um valor de 1, se o processo de criptografia usasse um autenticador. add_authenticator tem um tipo de dados int.
@add_authenticator
Uma variável que indica se o processo de criptografia original incluía, e criptografava, um autenticador junto com o texto não criptografado. Deve corresponder ao valor passado para ENCRYPTBYKEY durante o processo de criptografia de dados. @add_authenticator tem um tipo de dados int.
authenticator
Os dados usados como base para a geração do autenticador. Deve corresponder ao valor fornecido para ENCRYPTBYKEY. authenticator tem um tipo de dados sysname.
@authenticator
Uma variável que contém dados dos quais um autenticador é gerado. Deve corresponder ao valor fornecido para ENCRYPTBYKEY. @authenticator tem um tipo de dados sysname.
@add_authenticator
Uma variável que indica se o processo de criptografia original incluía, e criptografava, um autenticador junto com o texto não criptografado. Deve corresponder ao valor passado para ENCRYPTBYKEY durante o processo de criptografia de dados. @add_authenticator tem um tipo de dados int.
authenticator
Os dados usados como base para a geração do autenticador. Deve corresponder ao valor fornecido para ENCRYPTBYKEY. authenticator tem um tipo de dados sysname.
@authenticator
Uma variável que contém dados dos quais um autenticador é gerado. Deve corresponder ao valor fornecido para ENCRYPTBYKEY. @authenticator tem um tipo de dados sysname.
Tipos de retorno
varbinary, com um tamanho máximo de 8.000 bytes.
Comentários
DECRYPTBYKEYAUTOASYMKEY combina a funcionalidade de OPEN SYMMETRIC KEY e de DECRYPTBYKEY. Em uma única operação, ele primeiro descriptografa uma chave simétrica e depois descriptografa o texto cifrado com ela.
Permissões
Requer a permissão VIEW DEFINITION na chave simétrica e a permissão CONTROL na chave assimétrica.
Exemplos
Este exemplo mostra como DECRYPTBYKEYAUTOASYMKEY pode simplificar o código de descriptografia. Esse código deve ser executado em um AdventureWorks2025 banco de dados que ainda não tenha um DMK. Substitua por <password> uma senha forte.
--Create the keys and certificate.
USE AdventureWorks2022;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>';
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