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