DecryptByCert (Transact-SQL)

用证书的私钥解密数据。

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

语法

DecryptByCert ( 
                            certificate_ID , 
              { 'ciphertext' | @ciphertext } 
              [ , { 'cert_password' | @cert_password } ]
                            )

参数

  • certificate_ID
    数据库中证书的 ID。 int.
  • ciphertext
    已用证书的公钥加密的数据的字符串。
  • @ciphertext
    包含已使用证书进行加密的数据的 varbinary 类型变量。
  • cert_password
    用来加密证书私钥的密码。必须为 Unicode 字符。
  • @cert_password
    类型为 ncharnvarchar 的变量,其中包含用来加密证书私钥的密码。必须为 Unicode 字符。

返回类型

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

备注

此函数用证书的私钥解密数据。使用非对称密钥进行的加密转换会消耗大量资源。因此,EncryptByCert 和 DecryptByCert 不适合用于对用户数据的例行加密。

示例

下面的示例从 [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

请参阅

参考

EncryptByCert (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
ALTER CERTIFICATE (Transact-SQL)
DROP CERTIFICATE (Transact-SQL)
BACKUP CERTIFICATE (Transact-SQL)

其他资源

加密层次结构

帮助和信息

获取 SQL Server 2005 帮助