DECRYPTBYCERT (Transact-SQL)DECRYPTBYCERT (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database

この関数は証明書の秘密キーを使用し、暗号化データを復号します。This function uses the private key of a certificate to decrypt encrypted data.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

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

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

certificate_IDcertificate_ID
データベース内の証明書の ID。The ID of a certificate in the database. certificate_ID には、int データ型が与えられます。certificate_ID has an int data type.

ciphertextciphertext
証明書の公開キーで暗号化されているデータの文字列。The string of data encrypted with the public key of the certificate.

@ciphertext
証明書で暗号化されたデータを含む、型 varbinary の変数。A variable of type varbinary containing data encrypted with the certificate.

cert_passwordcert_password
証明書の秘密キーの復号に使用されるパスワード。The password used to encrypt the private key of the certificate. cert_password のデータ形式は Unicode にする必要があります。cert_password must have a Unicode data format.

@cert_password
証明書の秘密キーの復号に使用されるパスワードを含む、型 nchar または nvarchar の変数。A variable of type nchar or nvarchar containing the password used to encrypt the private key of the certificate. @cert_password のデータ形式は Unicode にする必要があります。@cert_password must have a Unicode data format.

戻り値の型Return Types

最大サイズが 8,000 バイトの varbinaryvarbinary, with a maximum size of 8,000 bytes.

解説Remarks

この関数では、証明書の秘密キーを使ってデータの暗号化を解除します。This function decrypts data with the private key of a certificate. 非対称キーを使用する暗号化変換では、リソースが大幅に消費されます。Cryptographic transformations that use asymmetric keys consume significant resources. そのため、日常的なユーザー データの暗号化/復号については、ENCRYPTBYCERT と DECRYPTBYCERT の使用を避けるように開発者に提案しています。Therefore, we suggest that developers avoid use of ENCRYPTBYCERT and DECRYPTBYCERT for routine user data encryption / decryption.

アクセス許可Permissions

DECRYPTBYCERT には、証明書に対する CONTROL 権限が必要です。DECRYPTBYCERT requires CONTROL permission on the certificate.

Examples

この例では、証明書 JanainaCert02 によって最初に暗号化されたデータとしてマークされている、[AdventureWorks2012].[ProtectedData04] からの行が選択されます。This example selects rows from [AdventureWorks2012].[ProtectedData04] marked as data originally encrypted by certificate JanainaCert02. 最初に、証明書 pGFD4bb925DGvbd2439587y のパスワードで証明書 JanainaCert02 の秘密キーが復号されます。The example first decrypts the private key of certificate JanainaCert02 with the password of certificate pGFD4bb925DGvbd2439587y. 次に、この秘密キーで暗号化テキストが復号されます。Then, the example decrypts the ciphertext with this private key. 暗号化データが varbinary から nvarchar に変換されます。The example converts the decrypted data from varbinary to nvarchar.

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

参照See Also

ENCRYPTBYCERT (Transact-SQL) ENCRYPTBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL) CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL) ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL) DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL) BACKUP CERTIFICATE (Transact-SQL)
暗号化階層Encryption Hierarchy