ENCRYPTBYASYMKEY (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

此函式使用非對稱金鑰為資料加密。

Transact-SQL 語法慣例

Syntax

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

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

asym_key_ID
資料庫中的非對稱金鑰識別碼。 asym_key_ID 具有 int 資料類型。

cleartext
ENCRYPTBYASYMKEY 會使用以非對稱金鑰來加密的資料字串。 cleartext 可以具有

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

  • varchar

資料類型。

@plaintext
ENCRYPTBYASYMKEY 會使用非對稱金鑰來加密其值的變數。 @plaintext 可以是

  • binary
  • char
  • nchar
  • nvarchar
  • varbinary

  • varchar

資料類型。

傳回型別

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

備註

相較於對稱金鑰加密和解密,使用非對稱金鑰的加密和解密作業會耗用大量資源,因此變得非常昂貴。 建議開發人員避免在大型資料集上執行非對稱金鑰加密和解密作業;例如,儲存在資料庫資料表中的使用者資料集。 相反地,建議開發人員先使用強式對稱金鑰將該資料加密,再使用非對稱金鑰將該對稱金鑰加密。

根據演算法,如果輸入超過特定位元組數目,ENCRYPTBYASYMKEY 會傳回 NULL。 特定限制:

  • 512 位元 RSA 金鑰最多可以加密 53 個位元組
  • 1024 位元金鑰最多可以加密 117 個位元組
  • 2048 位元金鑰最多可以加密 245 個位元組

在 SQL Server 中,憑證和非對稱金鑰都可以是 RSA 金鑰的包裝函式。

範例

此範例會使用非對稱金鑰 JanainaAsymKey02 將儲存在 @cleartext 中的文字加密。 陳述式會將加密資料插入 ProtectedData04 資料表中。

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

另請參閱

DECRYPTBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
加密階層