DECRYPTBYASYMKEY (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 加密的密码进行解密,此非对称密钥存储在 AdventureWorks.ProtectedData04 中。返回的数据将使用非对称密钥 JanainaAsymKey02 解密,此密钥已使用密码 pGFD4bb925DGvbd2439587y 解密。纯文本将转换为 nvarchar 类型。
SELECT CONVERT(nvarchar(max),
DecryptByAsymKey( AsymKey_Id('JanainaAsymKey02'),
ProtectedData, N'pGFD4bb925DGvbd2439587y' ))
AS DecryptedData
FROM [AdventureWorks].[Sales].[ProtectedData04]
WHERE Description = N'encrypted by asym key''JanainaAsymKey02''';
GO