次の方法で共有


VERIFYSIGNEDBYASYMKEY (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

デジタル署名付きデータが、署名された後に変更されているかどうかをテストします。

Transact-SQL 構文表記規則

構文

VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )  

引数

Asym_Key_ID
データベース内の非対称キー証明書の ID を指定します。

clear_text
検証するクリア テキスト データを指定します。

signature
署名付きデータにアタッチされた署名を指定します。 signaturevarbinary です。

戻り値の型

int

署名が一致する場合は 1 が返されます。それ以外の場合は 0 が返されます。

注釈

VerifySignedByAsymKey は、指定された非対称キーの公開キーを使用してデータの署名を復号化し、新しく計算されたデータの MD5 ハッシュと比較します。 値が一致すると、その署名が有効であることが確認されます。

アクセス許可

非対称キーに対する VIEW DEFINITION 権限が必要です。

A. データの署名が有効かどうかをテストする

次の例では、選択したデータが非対称キー WillisKey74 で署名された後に変更されていない場合は 1 が返されます。 この例では、データが変更されている場合は 0 が返されます。

SELECT Data,  
     VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), SignedData,  
     DataSignature ) as IsSignatureValid  
FROM [AdventureWorks2022].[SignedData04]   
WHERE Description = N'data encrypted by asymmetric key ''WillisKey74''';  
GO  
RETURN;  

B. 有効な署名が添付されたデータを含む結果セットを返す

次の例では、SignedData04 内の行で、非対称キー WillisKey74 で署名された後に変更されていないデータを含む行が返されます。 この例では、データベースから非対称キーの ID を取得するため関数 AsymKey_ID を呼び出します。

SELECT Data   
FROM [AdventureWorks2022].[SignedData04]   
WHERE VerifySignedByAsymKey( AsymKey_Id( 'WillisKey74' ), Data,  
     DataSignature ) = 1  
AND Description = N'data encrypted by asymmetric key ''WillisKey74''';  
GO  

関連項目

ASYMKEY_ID (Transact-SQL)
SIGNBYASYMKEY (Transact-SQL)
CREATE ASYMMETRIC KEY (Transact-SQL)
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
暗号化階層