ENCRYPTBYCERT (Transact-SQL)

使用证书的公钥加密数据。

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

语法

EncryptByCert ( certificate_ID , { 'cleartext' | @cleartext } )

参数

  • certificate_ID
    数据库中证书的 ID。int.

  • cleartext
    将使用证书进行加密的数据字符串。

  • @cleartext
    类型为 nvarchar、char、varchar、binary、varbinary 或 nchar 的变量,其中包含将以证书的公钥进行加密的数据。

返回类型

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

注释

该函数使用证书的公钥对数据进行加密。只能使用相应的私钥对加密文本进行解密。此类非对称转换较比使用对称密钥进行加密和解密的方法,其开销更大。因此,建议在处理大型数据集(如多个表中的用户数据)时不使用非对称加密。

示例

此示例将以称为 JanainaCert02 的证书对在 @cleartext 中存储的纯文本进行加密。经过加密的数据将插入表 ProtectedData04 中。

INSERT INTO [AdventureWorks2008R2].[ProtectedData04] 
    values( N'data encrypted by certificate ''Shipping04''',
    EncryptByCert(Cert_ID('JanainaCert02'), @cleartext) );
GO