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


DECRYPTBYCERT (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

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

Синтаксис

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

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

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

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

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

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

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

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

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

Замечания

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

Разрешения

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

Примеры

В этом примере выбираются строки из [AdventureWorks2022].[ProtectedData04], помеченного как данные, изначально зашифрованные с помощью сертификата JanainaCert02. Сначала выполняется расшифровка закрытого ключа сертификата JanainaCert02 с помощью пароля сертификата pGFD4bb925DGvbd2439587y. Затем с помощью этого закрытого ключа расшифровывается зашифрованный текст. Расшифрованные данные преобразуются из типа varbinary в тип nvarchar.

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

См. также

ENCRYP ТБ YCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
СЕРТИФИКАТ BACKUP (Transact-SQL)
Иерархия средств шифрования