2012-01-20 88 views
2

我目前正試圖在.NET 4.0 C#環境中如何最好地實現簽名/驗證。使用DPAPI簽名和驗證數據

我的要求是能夠在我的系統中以一個「用戶」身份簽署數據,稍後數據需要由消費者驗證。

爲了實現這一點,我試圖使用證書,但這是我開始掙扎的地方。我的困惑之一是,我被告知可以使用DPAPI進行證書管理,但是通過閱讀DPAPI文檔,它似乎只提供了一種方法來保護/取消本地主機/用戶的arbirary數據。雖然這些數據可能是一個私鑰,但它並不專門處理證書。

第一個問題是,doe DPAPI以任何方式鏈接到本地​​證書庫或其他證書管理解決方案?

希望代碼不必查找證書,而只需將數據傳遞給在數據源上簽名(在數據源上)或驗證(在使用者上)的有用API。

任何意見表示讚賞。

回答

1

DPAPI用於對僅在相同Windows用戶帳戶下進行解密的數據進行加密。它使用對稱加密算法,因此無法提供您需要的簽名功能。

如果您希望提供簽名功能,那麼使用基於公私密鑰對(使用分佈在證書中的公鑰)的簽名算法通常是合適的方法。 .NET BCL確實提供了用於簽名和驗證部分的功能(包括使用本地證書存儲區中的密鑰),但它不會幫助您處理事物的密鑰分發。

+0

非常感謝您的回覆,我認爲這證實我明白了我一直在閱讀的內容! 爲了說明問題,當您說.NET BCL時,您是指System.Security.Cryptography。*類,如SignedCms,X509Store和X509Certificate等? – user935653

+0

是的,以及提供SignData和VerifyData方法的AsymmetricAlgorithm子類可能對您的實現有用。 –