Partilhar via


ENCRYPTBYASYMKEY (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Essa função criptografa dados com uma chave assimétrica.

Convenções de sintaxe de Transact-SQL

Sintaxe

EncryptByAsymKey ( Asym_Key_ID , { 'plaintext' | @plaintext } )  

Argumentos

asym_key_ID
A ID de uma chave assimétrica no banco de dados. asym_key_ID tem um tipo de dados int.

cleartext
Um cadeia de caracteres de dados que ENCRYPTBYASYMKEY criptografará com a chave assimétrica. texto não criptografado pode ter um

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

ou

  • varchar

tipo de dados.

@plaintext
Uma variável que contém um valor que ENCRYPTBYASYMKEY criptografará com a chave assimétrica. @plaintext pode ter um

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

ou

  • varchar

tipo de dados.

Tipos de retorno

varbinary, com um tamanho máximo de 8.000 bytes.

Comentários

Operações de criptografia e descriptografia que usam chaves assimétricas consomem recursos significativos e, portanto, tornam-se caras quando comparadas à descriptografia e criptografia de chave simétrica. Sugerimos que os desenvolvedores evitem operações de criptografia e de descriptografia de chave assimétrica ao trabalharem com grandes conjuntos de dados, por exemplo, conjuntos de dados do usuário armazenados em tabelas de banco de dados. Em vez disso, sugerimos que os desenvolvedores primeiro criptografem dados com uma chave simétrica forte e, em seguida, criptografem a chave simétrica com uma chave assimétrica.

Dependendo do algoritmo, ENCRYPTBYASYMKEY retorna NULL se a entrada excede um certo número de bytes. Os limites específicos:

  • uma chave RSA de 512 bits pode criptografar até 53 bytes
  • uma chave RSA de 1024 bits pode criptografar até 117 bytes
  • uma chave RSA de 2048 bits pode criptografar até 245 bytes

No SQL Server, tanto certificados quanto chaves assimétricas servem como wrappers sobre chaves RSA.

Exemplos

Este exemplo criptografa o texto armazenado em @cleartext com a chave assimétrica JanainaAsymKey02. A instrução insere os dados criptografados na tabela ProtectedData04.

INSERT INTO AdventureWorks2022.Sales.ProtectedData04   
    VALUES( N'Data encrypted by asymmetric key ''JanainaAsymKey02''',  
    EncryptByAsymKey(AsymKey_ID('JanainaAsymKey02'), @cleartext) );  
GO  

Consulte Também

DECRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
Hierarquia de criptografia