DECRYPTBYASYMKEY (Transact-SQL)

使用非对称密钥解密数据。

主题链接图标Transact-SQL 语法约定

语法

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

参数

  • Asym_Key_ID
    数据库中非对称密钥的 ID。Asym_Key_ID 的数据类型为 int。

  • ciphertext
    使用非对称密钥加密的数据字符串。

  • @ciphertext
    这是类型为 varbinary 的变量,其中包含已用非对称密钥加密的数据。

  • Asym_Key_Password
    用于加密数据库中非对称密钥的密码。

返回类型

最大大小为 8,000 个字节的 varbinary。

注释

与使用对称密钥进行加密和解密相比,使用非对称密钥进行加密和解密时的系统开销要高得多。当处理大型数据集(例如表中的用户数据)时,不推荐使用非对称密钥。

权限

需要对非对称密钥具有 CONTROL 权限。

示例

以下示例将对已使用非对称密钥 JanainaAsymKey02 加密的密码进行解密,此非对称密钥存储在 AdventureWorks2008R2.ProtectedData04 中。返回的数据将使用非对称密钥 JanainaAsymKey02 解密,此密钥已使用密码 pGFD4bb925DGvbd2439587y 解密。纯文本将转换为 nvarchar 类型。

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