VERIFYSIGNEDBYASYMKEY (Transact-SQL)

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

測試數位簽署的資料在簽署之後是否已經變更。

Transact-SQL 語法慣例

Syntax

VerifySignedByAsymKey( Asym_Key_ID , clear_text , signature )  

注意

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

引數

Asym_Key_ID
這是資料庫中的非對稱金鑰憑證識別碼。

clear_text
這是正在驗證的純文字資料。

簽章
這是附加在已簽署資料中的簽章。 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 簽署之後尚未變更的資料。 這個範例會呼叫函數 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)
加密階層