Поделиться через


ENCRYPTBYASYMKEY (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Эта функция шифрует данные с помощью асимметричного ключа.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

asym_key_ID
Идентификатор асимметричного ключа в базе данных. asym_key_ID имеет тип данных int.

cleartext
Строка данных, которую функция ENCRYPTBYASYMKEY зашифрует с помощью асимметричного ключа. Аргумент cleartext может иметь тип данных

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

or

  • varchar

.

@plaintext
Переменная, содержащая значение, которое функция ENCRYPTBYASYMKEY зашифрует с помощью асимметричного ключа. @plaintext может иметь

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

or

  • varchar

.

Типы возвращаемых данных

Переменная типа varbinary с максимальным размером 8000 байт.

Замечания

Операции шифрования и расшифровки с асимметричными ключами потребляют много ресурсов и потому становятся более затратными, чем при использовании симметричных ключей. При работе с большими наборами данных (например, с данными пользователей, хранящимися в таблицах базы данных) разработчикам не рекомендуется использовать асимметричный ключ для шифрования или расшифровки. Вместо этого рекомендуется сначала шифровать данные с помощью надежного симметричного ключа, а затем шифровать симметричный ключ с помощью асимметричного.

В зависимости от алгоритма функция ENCRYPTBYASYMKEY возвращает значение NULL, если ввод превышает определенное число байтов. Ограничения:

  • С помощью 512-битового ключа RSA можно шифровать до 53 байт.
  • С помощью 1024-битового ключа можно шифровать до 117 байт.
  • С помощью 2048-битового ключа можно шифровать до 245 байт.

В SQL Server и сертификаты, и асимметричные ключи служат оболочками для ключей RSA.

Примеры

В приведенном ниже примере текст из переменной @cleartext шифруется асимметричным ключом JanainaAsymKey02. Инструкция вставляет зашифрованные данные в таблицу ProtectedData04.

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

См. также

DECRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
Иерархия средств шифрования