VerifySignedByCert (Transact-SQL)
SQL Server 2005
測試數位簽署的資料是否已經在簽署之後變更。
A. 驗證簽署的資料尚未遭到竄改
下列範例會測試 Signed_Data 中的資訊,在利用名為 Shipping04 的憑證簽署之後,是否已經變更。簽章是儲存在 DataSignature 中。憑證 (Shipping04) 會傳遞至 Cert_ID,後者則會傳回資料庫中的憑證識別碼。如果 VerifySignedByCert 傳回 1,表示簽章正確。如果 VerifySignedByCert 傳回 0,表示 Signed_Data 中的資料,並不是產生 DataSignature 所用的資料。在本例中,表示 Signed_Data 在簽署之後已經變更,或者 Signed_Data 是以不同的憑證簽署的。
SELECT Data, VerifySignedByCert( Cert_Id( 'Shipping04' ),
Signed_Data, DataSignature ) AS IsSignatureValid
FROM [AdventureWorks].[SignedData04]
WHERE Description = N'data signed by certificate ''Shipping04''';
GO
B. 只傳回具有有效簽章的記錄
這項查詢只會傳回自從使用憑證 Shipping04 簽署之後尚未變更的記錄。
SELECT Data FROM [AdventureWorks].[SignedData04]
WHERE VerifySignedByCert( Cert_Id( 'Shipping04' ), Data,
DataSignature ) = 1
AND Description = N'data signed by certificate ''Shipping04''';
GO
社群新增項目
新增
顯示:

