Share via


DECRYPTBYCERT (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

此函式會使用憑證的私密金鑰為加密資料解密。

Transact-SQL 語法慣例

Syntax

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

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

certificate_ID
資料庫中的憑證識別碼。 certificate_ID 具有 int 資料類型。

ciphertext
以憑證公開金鑰加密的資料字串。

@ciphertext
varbinary 類型的變數,其中包含以憑證加密的資料。

cert_password
用來加密憑證私密金鑰的密碼。 cert_password 必須具有 Unicode 資料格式。

@cert_password
ncharnvarchar 類型的變數,其中包含用來加密憑證私密金鑰的密碼。 @cert_password 必須是 Unicode 資料格式。

傳回型別

varbinary,大小上限為 8,000 個位元組。

備註

這個函數是利用憑證的私密金鑰為資料解密。 使用非對稱金鑰來轉換密碼編譯,會耗用大量資源。 因此,建議開發人員避免使用 ENCRYPTBYCERT 和 DECRYPTBYCERT 對常式使用者資料進行加密/解密。

權限

DECRYPTBYCERT 需要憑證的 CONTROL 權限。

範例

此範例會從 [AdventureWorks2022].[ProtectedData04] 選取標示為憑證 JanainaCert02 原本加密之資料的資料列。 此範例會先使用憑證密碼 pGFD4bb925DGvbd2439587y 為憑證 JanainaCert02 的私密金鑰解密。 然後,此範例會使用此私密金鑰為加密文字解密。 此範例會將解密資料從 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  

另請參閱

ENCRYPTBYCERT (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)
加密階層