分享方式:


DECRYPTBYASYMKEY (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體

此函式會使用非對稱金鑰為加密資料解密。

Transact-SQL 語法慣例

語法

DecryptByAsymKey (Asym_Key_ID , { 'ciphertext' | @ciphertext }   
    [ , 'Asym_Key_Password' ] )  

引數

Asym_Key_ID
資料庫中的非對稱金鑰識別碼。 Asym_Key_ID 具有 int 資料類型。

ciphertext
以非對稱金鑰加密的資料字串。

@ciphertext
varbinary 類型的變數,其中包含以非對稱金鑰加密的資料。

Asym_Key_Password
用來加密資料庫中非對稱金鑰的密碼。

傳回型別

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

備註

相較於對稱式加密/解密,非對稱金鑰加密/解密具有較高的成本。 使用大型資料集時 (例如儲存在資料表中的使用者資料),建議開發人員避免非對稱金鑰加密/解密。

權限

DECRYPTBYASYMKEY 需要非對稱金鑰的 CONTROL 權限。

範例

此範例會解密原本以非對稱金鑰 JanainaAsymKey02 來加密的加密文字。 AdventureWorks2022.ProtectedData04 會儲存此非對稱金鑰。 此範例會以非對稱金鑰 JanainaAsymKey02 來解密傳回的資料。 此範例使用密碼 pGFD4bb925DGvbd2439587y 來解密此非對稱金鑰。 此範例會將傳回的純文字轉換成 nvarchar 類型。

SELECT CONVERT(NVARCHAR(max),  
    DecryptByAsymKey( AsymKey_Id('JanainaAsymKey02'),   
    ProtectedData, N'pGFD4bb925DGvbd2439587y' ))   
AS DecryptedData   
FROM [AdventureWorks2022].[Sales].[ProtectedData04]   
WHERE Description = N'encrypted by asym key''JanainaAsymKey02''';  
GO  

另請參閱

ENCRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
選擇加密演算法
加密階層