DECRYPTBYCERT (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