使用DPAPI签名和验证数据

时间:2012-01-20 09:22:06

标签: c# .net cryptography signing dpapi

我目前正在尝试如何最好地在.NET 4.0 C#环境中实施签名/验证。

我的要求是能够将我的系统中的数据作为一个“用户”进行签名,之后某个时候数据需要由消费者进行验证。

为了实现这一目标,我尝试使用证书,但这是我开始挣扎的地方。我混淆的一个方面是我被告知我可以使用DPAPI进行证书管理,但是从阅读DPAPI文档来看,它似乎只提供了保护/解除本地主机/用户的arbirary数据保护的方法。虽然这些数据可能恰好是私钥,但它并不专门处理证书。

第一个问题是,doe DPAPI以任何方式链接到本地​​证书存储区或其他证书管理解决方案?

希望代码不必定位证书,而是简单地将数据传递给有用的API,在API中签名(在数据源上)或验证(在消费者身上)。

感谢任何评论。

1 个答案:

答案 0 :(得分:1)

DPAPI用于加密仅在同一Windows用户帐户下解密的数据。它使用对称加密算法,因此无法提供您需要的签名功能。

如果您希望提供签名功能,那么使用基于公钥 - 私钥对的签名算法(使用分发在证书中的公钥)通常是合适的方法。 .NET BCL确实为签名和验证部分提供了功能(包括使用本地证书存储中的密钥),但它对于密钥分发方面没有帮助。