ENCRYPTBYASYMKEY (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Diese Funktion verschlüsselt Daten mit einem asymmetrischen Schlüssel.

Transact-SQL-Syntaxkonventionen

Syntax

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

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

asym_key_ID
Die ID eines asymmetrischen Schlüssels in der Datenbank. asym_Key_ID weist den Datentyp int auf.

Klartext
Eine Zeichenfolge von Daten, die ENCRYPTBYASYMKEY mit dem asymmetrischen Schlüssel verschlüsselt. Klartext kann die Datentypen

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

oder

  • varchar

aufweisen.

@plaintext
Eine Variable, die einen Wert enthält, der von ENCRYPTBYASYMKEY mit dem asymmetrischen Schlüssel verschlüsselt wird. @plaintext kann die Datentypen

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

oder

  • varchar

aufweisen.

Rückgabetypen

varbinary mit einer maximalen Größe von 8.000 Byte.

Bemerkungen

Verschlüsselungs- und Entschlüsselungsvorgänge, die asymmetrische Schlüssel verwenden, verwenden viele Ressourcen und werden deshalb kostspielig, verglichen mit der Verschlüsselung und Entschlüsselung mit einem symmetrischen Schlüssel. Es wird empfohlen, dass Entwickler asymmetrische Schlüssel für Verschlüsselungs- und Entschlüsselungsvorgänge auf großen Datasets vermeiden, z.B. bei Benutzerdaten in Datenbanktabellen. Stattdessen sollten Entwickler die Daten zunächst mit einem starken symmetrischen Schlüssel verschlüsseln und dann diesen symmetrischen Schlüssel mit einem asymmetrischen Schlüssel verschlüsseln.

ENCRYPTBYASYMKEY gibt je nach Algorithmus NULL zurück, wenn die Eingabe eine bestimmte Anzahl von Bytes überschreitet. Die spezifischen Grenzwerte:

  • Ein 512-Bit-RSA-Schlüssel kann bis zu 53 Bytes verschlüsseln
  • Ein 1024-Bit-Schlüssel kann bis zu 117 Bytes verschlüsseln
  • Ein 2048-Bit-Schlüssel kann bis zu 245 Bytes verschlüsseln

Sowohl Zertifikate als auch asymmetrische Schlüssel dienen in SQL Server als Wrapper für RSA-Schlüssel.

Beispiele

Im folgenden Beispiel wird der in @cleartext gespeicherte Text mit dem asymmetrischen Schlüssel JanainaAsymKey02 verschlüsselt. Due Anweisung fügt die verschlüsselten Daten in die Tabelle ProtectedData04 ein.

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

Weitere Informationen

DECRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
Verschlüsselungshierarchie