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


DECRYPTBYCERT (Transact-SQL)

Расшифровывает данные при помощи закрытого ключа сертификата.

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

Синтаксис

DecryptByCert (certificate_ID , { 'ciphertext' | @ciphertext } 
    [ , { 'cert_password' | @cert_password } ] )

Аргументы

  • certificate_ID
    Идентификатор сертификата в базе данных. Аргумент certificate_ID имеет тип int.

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

  • @ciphertext
    Переменная типа varbinary. Содержит данные, которые были зашифрованы с помощью сертификата.

  • cert_password
    Пароль, который использовался для шифрования закрытого ключа сертификата. Должен быть в Юникоде.

  • @cert_password
    Переменная типа nchar или nvarchar, содержащая пароль, который использовался для шифрования закрытого ключа сертификата. Должна быть в Юникоде.

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

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

Замечания

Эта функция расшифровывает данные при помощи закрытого ключа сертификата. Криптографические преобразования с использованием асимметричных ключей требуют значительных ресурсов. Поэтому функции EncryptByCert и DecryptByCert не подходят для операций шифрования пользовательских данных.

Разрешения

Требует разрешения CONTROL для сертификата.

Примеры

В следующем примере производится выборка строк из таблицы [AdventureWorks].[ProtectedData04], помеченных как data encrypted by certificate JanainaCert02. Пример дешифрует зашифрованный текст с помощью закрытого ключа сертификата JanainaCert02, который сначала дешифруется с помощью пароля сертификата, pGFD4bb925DGvbd2439587y. Расшифрованные данные преобразуются из типа varbinary в тип nvarchar.

SELECT convert(nvarchar(max), DecryptByCert(Cert_Id('JanainaCert02'),
    ProtectedData, N'pGFD4bb925DGvbd2439587y'))
FROM [AdventureWorks].[ProtectedData04] 
WHERE Description 
    = N'data encrypted by certificate '' JanainaCert02''';
GO