Udostępnij za pomocą


ENCRYPTBYASYMKEY (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Funkcja ta szyfruje dane kluczem asymetrycznym.

Transact-SQL konwencje składni

Składnia

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

Arguments

asym_key_ID
ID asymetrycznego klucza w bazie danych. asym_key_ID ma typ danych int .

Tekst jawny
Ciąg danych, który ENCRYPTBYASYMKEY będzie szyfrowany kluczem asymetrycznym. Tekst przejrzysty może mieć

  • binary
  • Char
  • nchar
  • nvarchar
  • varbinary

lub

  • varchar

typ danych.

@plaintext
Zmienna zawierająca wartość, która ENCRYPTBYASYMKEY zaszyfruje się kluczem asymetrycznym. @plaintext może mieć

  • binary
  • Char
  • nchar
  • nvarchar
  • varbinary

lub

  • varchar

typ danych.

Typy zwracane

varbinary o maksymalnym rozmiarze 8000 bajtów.

Uwagi

Operacje szyfrowania i deszyfrowania z użyciem kluczy asymetrycznych zużywają znaczne zasoby, przez co stają się droższe w porównaniu z szyfrowaniem i deszyfrowaniem kluczem symetrycznym. Sugerujemy, aby deweloperzy unikali operacji szyfrowania i deszyfrowania klucza asymetrycznego na dużych zbiorach danych – na przykład zbiorach danych użytkownika przechowywanych w tabelach bazy danych. Zamiast tego sugerujemy, aby deweloperzy najpierw zaszyfrowali te dane silnym kluczem symetrycznym, a następnie zaszyfrowali ten klucz symetrycznym kluczem asymetrycznym.

W zależności od algorytmu, zwraca NULL, ENCRYPTBYASYMKEY jeśli wejście przekracza określoną liczbę bajtów. Konkretne ograniczenia:

  • 512-bitowy klucz RSA może zaszyfrować do 53 bajtów
  • Klucz 1024-bitowy może zaszyfrować do 117 bajtów
  • Klucz 2048-bitowy może zaszyfrować do 245 bajtów

W SQL Server zarówno certyfikaty, jak i klucze asymetryczne pełnią rolę obudowań nad kluczami RSA.

Przykłady

Ten przykład szyfruje tekst przechowywany w za @cleartext pomocą asymetrycznego klucza JanainaAsymKey02. Oświadczenie wprowadza zaszyfrowane dane do tabeli ProtectedData04 .

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

Zobacz też

DECRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMETRYCZNY KLUCZ (Transact-SQL)
Hierarchia szyfrowania