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


ENCRYPTBYASYMKEY (Transact-SQL)

Шифрует данные при помощи асимметричного ключа.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

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

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

  • @plaintext
    Переменная типа nvarchar, char, varchar, binary, varbinary или nchar, содержащая данные, которые будут зашифрованы с помощью асимметричного ключа.

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

varbinary с максимальным размером 8 000 байт.

Замечания

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

EncryptByAsymKey возвращает значение NULL, если ввод превышает определенное число байтов, в зависимости от алгоритма. Ограничения: ключ RSA на 512 бит может шифровать до 53 байт, ключ на 1024 бита может шифровать до 117 байт, ключ на 2048 бит может шифровать до 245 байт. (Обратите внимание, что в SQL Server и сертификаты, и асимметричные ключи служат оболочками для ключей RSA.)

Примеры

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

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

См. также

Справочник

DECRYPTBYASYMKEY (Transact-SQL)

CREATE ASYMMETRIC KEY (Transact-SQL)

Основные понятия

Иерархия средств шифрования