ENCRYPTBYASYMKEY (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

この関数は非対称キーでデータを暗号化します。

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

asym_key_ID
データベース内の非対称キーの ID。 asym_key_ID には、int データ型が与えられます。

cleartext
ENCRYPTBYASYMKEY が非対称キーで暗号化するデータの文字列。 cleartext のデータ型には

  • [バイナリ]
  • char
  • nchar
  • nvarchar
  • varbinary

or

  • varchar

があります。

@plaintext
ENCRYPTBYASYMKEY が非対称キーで暗号化する値を保持する変数。 plaintext のデータ型には

  • [バイナリ]
  • char
  • nchar
  • nvarchar
  • varbinary

or

  • varchar

があります。

戻り値の型

最大サイズが 8,000 バイトの varbinary

解説

非対称キーを使用する暗号化操作と復号操作は大量のリソースを消費します。そのため、対称キーの暗号化と復号に比べ、高くつきます。 データベース テーブルに格納されているユーザー データ データベースなど、データセットが大規模になる場合、非対称キーで暗号化/復号することは開発者にお勧めしていません。 代わりに、強力な対称キーでデータを暗号化し、その対称キーを非対称キーで暗号化することをお勧めしています。

アルゴリズムにもよりますが、ENCRYPTBYASYMKEY は、入力が特定のバイト数を超えると、NULL を返します。 具体的な制限:

  • 512 ビット RSA キーで暗号化できるのは 53 バイトまで
  • 1024 ビット キーで暗号化できるのは 117 バイトまで
  • 2048 ビット キーで暗号化できるのは 245 バイトまで

SQL Server では、証明書と非対称キーの両方が RSA キーのラッパーとして機能します。

この例では、@cleartext に格納されているテキストを非対称キー JanainaAsymKey02 を使用して暗号化します。 このステートメントは、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)
暗号化階層