ENCRYPTBYASYMKEY (Transact-SQL)

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

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

语法

EncryptByAsymKey ( Asym_Key_ID , { 'plaintext' | @plaintext } )

参数

  • Asym_Key_ID
    数据库中非对称密钥的 ID。 int.

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

  • @plaintext
    这是类型为 nvarchar、char、varchar、binary、varbinary 或 nchar 的变量,其中包含要用非对称密钥加密的数据。

返回类型

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

注释

与使用对称密钥进行加密和解密相比,使用非对称密钥进行加密和解密时的系统开销要高得多。 建议您不要使用非对称密钥加密大型数据集,例如表中的用户数据。 而应该使用强对称密钥加密数据并使用非对称密钥加密对称密钥。

根据算法,如果输入超出一定字节数,EncryptByAsymKey 将返回 NULL。 限制为:512 位 RSA 密钥可加密达 53 个字节,1024 位密钥可加密达 117 个字节,而 2048 密钥可加密达 245 个字节。 (注意,在 SQL Server 中,证书和异步密钥都是 RSA 密钥的包装。)

示例

以下示例将用非对称密钥 JanainaAsymKey02 加密在 @cleartext 中存储的文本。 加密的数据插入表 ProtectedData04 中。

INSERT INTO AdventureWorks2012.Sales.ProtectedData04 
    VALUES( N'Data encrypted by asymmetric key ''JanainaAsymKey02''',
    EncryptByAsymKey(AsymKey_ID('JanainaAsymKey02'), @cleartext) );
GO

请参阅

参考

DECRYPTBYASYMKEY (Transact-SQL)

CREATE ASYMMETRIC KEY (Transact-SQL)

概念

加密层次结构