ENCRYPTBYASYMKEY (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Denna funktion krypterar data med en asymmetrisk nyckel.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

asym_key_ID
ID:t för en asymmetrisk nyckel i databasen. asym_key_ID har en int-datatyp .

Klartext
En datasträng som ENCRYPTBYASYMKEY krypteras med den asymmetriska nyckeln. Klartext kan ha en

  • binary
  • tecken
  • nchar
  • nvarchar
  • varbinary

eller

  • varchar

datatyp.

@plaintext
En variabel som innehåller ett värde som ENCRYPTBYASYMKEY kommer att krypteras med den asymmetriska nyckeln. @plaintext kan ha en

  • binary
  • tecken
  • nchar
  • nvarchar
  • varbinary

eller

  • varchar

datatyp.

Returtyper

varbinary, med en maximal storlek på 8 000 byte.

Anmärkningar

Krypterings- och dekrypteringsoperationer som använder asymmetriska nycklar förbrukar betydande resurser och blir därför dyra jämfört med symmetrisk nyckelkryptering och dekryptering. Vi föreslår att utvecklare undviker asymmetrisk nyckelkryptering och dekryptering på stora datamängder – till exempel användardatamängder lagrade i databastabeller. Istället föreslår vi att utvecklare först krypterar den datan med en stark symmetrisk nyckel, och sedan krypterar den symmetriska nyckeln med en asymmetrisk nyckel.

Beroende på algoritmen returnerar ENCRYPTBYASYMKEYNULL om indatan överstiger ett visst antal byte. De specifika gränserna:

  • en 512-bitars RSA-nyckel kan kryptera upp till 53 byte
  • En 1024-bitars nyckel kan kryptera upp till 117 byte
  • En 2048-bitars nyckel kan kryptera upp till 245 byte

I SQL Server fungerar både certifikat och asymmetriska nycklar som wrappers över RSA-nycklar.

Examples

Detta exempel krypterar texten som lagras i @cleartext med den asymmetriska nyckeln JanainaAsymKey02. Satsen infogar den krypterade datan i tabellen ProtectedData04 .

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

Se även

DEKRYPTERA ASYMKEY (Transact-SQL)
SKAPA ASYMMETRISK NYCKEL (Transact-SQL)
Krypteringshierarki