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)
Иерархия средств шифрования