The Wayback Machine - http://web.archive.org/web/20140105200644/http://msdn.microsoft.com:80/zh-tw/library/ms178631(v=sql.90).aspx
匯出 (0) 列印
全部展開
Expand Minimize
本主題尚未接受評分 - 為這個主題評分

VerifySignedByCert (Transact-SQL)

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

主題連結圖示 Transact-SQL 語法慣例


VerifySignedByCert( Cert_ID , signed_data , signature )
Cert_ID

這是資料庫中的憑證識別碼。 int

signed_data

這是 nvarchar、char、varchar 或 nchar 類型的變數,其中包含已經利用憑證加以簽署的資料。

signature

這是附加在已簽署資料中的簽章。 varbinary.

int

如果已簽署的資料不變,則傳回 1,否則傳回 0。

VerifySignedByCert 利用儲存在資料庫的憑證,從先前簽署的資料衍生簽章。VerifySignedByCert 會將新衍生的簽章,與在擷取資料時附加在簽署資料後面的簽章互相比較。如果新衍生的簽章,與附加在簽署資料的簽章一樣,就證明資料在簽署之後沒有變更。簽章計算是以正在進行確認之模組中的所有字元為基礎,這些字元包括開頭空白、尾端空白、歸位字元 (Carriage Return) 和換行字元 (Line Feed) 等。

需要憑證的 VIEW DEFINITION 權限。

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
本文對您有任何幫助嗎?
(剩餘 1500 個字元)

社群新增項目

新增
顯示:
© 2014 Microsoft. 著作權所有,並保留一切權利。