DECRYPTBYCERT (Transact-SQL)

証明書の秘密キーを使ってデータの暗号化を解除します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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

引数

  • certificate_ID
    データベース内の証明書の ID を指定します。certificate_ID のデータ型は int です。

  • ciphertext
    証明書の公開キーで暗号化されているデータの文字列を指定します。

  • @ciphertext
    証明書で暗号化されたデータを含む varbinary 型の変数を指定します。

  • cert_password
    証明書の秘密キーの暗号化に使用されたパスワードを指定します。Unicode であることが必要です。

  • @cert_password
    証明書の秘密キーの暗号化に使用されたパスワードを含む、nchar 型または nvarchar 型の変数を指定します。Unicode であることが必要です。

戻り値の型

varbinary 型 (最大サイズは 8,000 バイト)

説明

この関数では、証明書の秘密キーを使ってデータの暗号化を解除します。非対称キーを使用する暗号化変換では、リソースが大幅に消費されます。このため、ユーザー データを日常的に暗号化する場合、EncryptByCert および DecryptByCert は適切ではありません。

権限

証明書に対する CONTROL 権限が必要です。

次の例では、data encrypted by certificate JanainaCert02 とマークされた [AdventureWorks].[ProtectedData04] から行を選択し、証明書 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