ENCRYPTBYASYMKEY (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Questa funzione crittografa i dati con una chiave asimmetrica.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

asym_key_ID
ID di una chiave asimmetrica nel database. asym_key_ID ha un tipo di dati int.

cleartext
Stringa di dati che verrà crittografata da ENCRYPTBYASYMKEY con la chiave asimmetrica. cleartext può avere

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

or

  • varchar

come tipo di dati.

@plaintext
Variabile contenente un valore che verrà crittografato da ENCRYPTBYASYMKEY con la chiave asimmetrica. plaintext può avere

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

or

  • varchar

come tipo di dati.

Tipi restituiti

varbinary con un valore massimo di 8.000 byte.

Osservazioni:

Le operazioni di crittografia e decrittografia che usano chiavi asimmetriche usano una quantità elevata di risorse e diventano quindi molto costose rispetto alla crittografia e alla decrittografia a chiavi simmetriche. È consigliabile che gli sviluppatori evitino le operazioni di crittografia e decrittografia con chiavi asimmetriche su set di dati di grandi dimensioni, ad esempio nel caso di set di dati utente archiviati in tabelle di database. Si consiglia invece agli sviluppatori di crittografare prima i dati con una chiave simmetrica avanzata e quindi di crittografare tale chiave simmetrica con una chiave asimmetrica.

A seconda dell'algoritmo, ENCRYPTBYASYMKEY restituisce NULL se l'input supera un determinato numero di byte. Limiti specifici:

  • una chiave RSA a 512 bit può crittografare fino a 53 byte
  • una chiave a 1024 bit può crittografare fino a 117 byte
  • una chiave a 2048 bit può crittografare fino a 245 byte

In SQL Server sia i certificati che le chiavi asimmetriche fungono da wrapper sulle chiavi RSA.

Esempi

Questo esempio crittografa il testo archiviato in @cleartext con la chiave asimmetrica JanainaAsymKey02. L'istruzione inserisce i dati crittografati nella tabella ProtectedData04.

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

Vedi anche

DECRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
Gerarchia di crittografia