DECRYPTBYCERT (Transact-SQL)
用证书的私钥解密数据。
语法
DecryptByCert (certificate_ID , { 'ciphertext' | @ciphertext }
[ , { 'cert_password' | @cert_password } ] )
参数
certificate_ID
数据库中证书的 ID。certificate_ID 的数据类型为 int。ciphertext
已用证书的公钥加密的数据的字符串。@ciphertext
包含已使用证书进行加密的数据的 varbinary 类型变量。cert_password
用来加密证书私钥的密码。必须为 Unicode 字符。@cert_password
类型为 nchar 或 nvarchar 的变量,其中包含用来加密证书私钥的密码。必须为 Unicode 字符。
返回类型
最大大小为 8,000 个字节的 varbinary。
注释
此函数用证书的私钥解密数据。使用非对称密钥进行的加密转换会消耗大量资源。因此,EncryptByCert 和 DecryptByCert 不适合用于对用户数据的例行加密。
权限
需要对证书拥有 CONTROL 权限。
示例
下面的示例从 [AdventureWorks].[ProtectedData04] 中选择标记为 data encrypted by certificate JanainaCert02 的行。此示例使用证书 JanainaCert02 的私钥对密码进行解密,首次解密时使用的是证书的密码 pGFD4bb925DGvbd2439587y。解密后的数据将从 varbinary 转换为 nvarchar。
SELECT convert(nvarchar(max), DecryptByCert(Cert_Id('JanainaCert02'),
ProtectedData, N'pGFD4bb925DGvbd2439587y'))
FROM [AdventureWorks].[ProtectedData04]
WHERE Description
= N'data encrypted by certificate '' JanainaCert02''';
GO