DECRYPTBYASYMKEY (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

此函数使用非对称密钥解密已加密数据。

Transact-SQL 语法约定

语法

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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

Asym_Key_ID
数据库中非对称密钥的 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)
选择加密算法
加密层次结构