Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Managed Instance
Esta função desencripta dados com uma chave simétrica. Essa chave simétrica desencripta automaticamente com um certificado.
Transact-SQL convenções de sintaxe
Sintaxe
DECRYPTBYKEYAUTOCERT ( cert_ID , cert_password
, { 'ciphertext' | @ciphertext }
[ , { add_authenticator | @add_authenticator }
[ , { authenticator | @authenticator } ] ] )
Arguments
cert_ID
A ID do certificado usado para proteger a chave simétrica. cert_ID tem um tipo de dados int .
cert_password
A senha usada para criptografar a chave privada do certificado. Pode ter um NULL valor se a chave mestra do banco de dados (DMK) proteger a chave privada.
cert_password tem um tipo de dados nvarchar .
'texto cifrado'
A cadeia de dados criptografados com a chave. CipherText tem um tipo de dados varbinary .
@ciphertext
Uma variável do tipo varbinary contendo dados criptografados com a chave.
add_authenticator
Indica se o processo de criptografia original incluiu e criptografou um autenticador junto com o texto sem formatação. Deve corresponder ao valor passado para ENCRYPTBYKEY durante o processo de criptografia de dados. add_authenticator tem um valor de 1 se o processo de criptografia usou um autenticador. add_authenticator tem um tipo de dados int .
@add_authenticator
Uma variável que indica se o processo de encriptação original incluía e encriptava um autenticador juntamente com o texto simples. Deve corresponder ao valor passado para ENCRYPTBYKEY durante o processo de criptografia de dados. @add_authenticator tem um tipo de dados int .
autenticador
Os dados utilizados como base para a geração do autenticador. Deve corresponder ao valor fornecido a ENCRYPTBYKEY. O autenticador tem um tipo de dados sysname .
@authenticator
Uma variável que contém dados a partir dos quais um autenticador gera. Deve corresponder ao valor fornecido a ENCRYPTBYKEY. @authenticator tem um tipo de dados sysname .
Tipos de devolução
varbinary, com um tamanho máximo de 8.000 bytes.
Observações
DECRYPTBYKEYAUTOCERT combina a funcionalidade de OPEN SYMMETRIC KEY e DECRYPTBYKEY. Numa única operação, primeiro desencripta uma chave simétrica e, em seguida, desencripta o texto cifrado encriptado com essa chave.
Permissions
Requer VIEW DEFINITION permissão na chave simétrica e CONTROL permissão no certificado.
Examples
Este exemplo mostra como DECRYPTBYKEYAUTOCERT pode simplificar o código de desencriptação. Esse código deve ser executado em um AdventureWorks2025 banco de dados que ainda não tenha um DMK. Substitua <password> por 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 CERTIFICATE HumanResources037
WITH SUBJECT = 'Sammamish HR', EXPIRY_DATE = '10/31/2035';
CREATE SYMMETRIC KEY SSN_Key_01
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE HumanResources037;
GO
----Add a column of encrypted data.
ALTER TABLE HumanResources.Employee
ADD EncryptedNationalIDNumber VARBINARY (128);
OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE HumanResources037;
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO
--
--Close the key used to encrypt the data.
CLOSE SYMMETRIC KEY SSN_Key_01;
--
--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_01 DECRYPTION BY CERTIFICATE HumanResources037;
SELECT NationalIDNumber,
EncryptedNationalIDNumber AS 'Encrypted ID Number',
CONVERT (NVARCHAR, DecryptByKey(EncryptedNationalIDNumber)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;
CLOSE SYMMETRIC KEY SSN_Key_01;
--
--OPTION TWO, using DECRYPTBYKEYAUTOCERT()
SELECT NationalIDNumber,
EncryptedNationalIDNumber AS 'Encrypted ID Number',
CONVERT (NVARCHAR, DECRYPTBYKEYAUTOCERT(cert_ID('HumanResources037'), NULL, EncryptedNationalIDNumber)) AS 'Decrypted ID Number'
FROM HumanResources.Employee;