共用方式為


ENCRYPTBYASYMKEY (Transact-SQL)

利用非對稱金鑰為資料加密。

主題連結圖示 Transact-SQL 語法慣例

語法

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

引數

  • Asym_Key_ID
    這是資料庫中的非對稱金鑰識別碼。 int.

  • cleartext
    這是要利用非對稱金鑰加密的資料字串。

  • @plaintext
    nvarchar、char、varchar、binary、varbinary 或 nchar 類型的變數,其中包含要以非對稱金鑰加密的資料。

傳回類型

varbinary,大小上限為 8,000 位元組。

備註

相較於利用對稱金鑰來加密及解密,利用非對稱金鑰來加密及解密的成本相當高。 建議您不要使用非對稱金鑰來加密大型資料集,例如資料表中的使用者資料。 您應該改用強式對稱金鑰來加密資料,並使用非對稱金鑰將該對稱金鑰加密。

根據演算法,如果輸入超過特定位元組數目,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)

概念

加密階層