ENCRYPTBYASYMKEY (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
この関数は非対称キーでデータを暗号化します。
構文
EncryptByAsymKey ( Asym_Key_ID , { 'plaintext' | @plaintext } )
引数
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)
暗号化階層