7

我的任务是在 C# 中为一个公司项目实现一个 PKI 库,但一直找不到一个好的实现。似乎有多个库,并且指向已删除的 MSDN 库的许多断开的链接。我见过使用 Crypt32.dll 的人,构建自己的库的人,使用 P/Invoke 访问系统证书存储的人,扩展内置库的人,根本不适用于 C# 的示例(例如 Java 示例),和商业图书馆。

我的问题是,对于简单的数据加密/解密,最推荐使用哪个实现/库?

作为我计划使用它的一些背景知识,我只需要使用私钥 (.pfx) 加密消息,并使用公钥 (.cer) 解密。项目的这个级别不需要消息签名和身份验证,尽管将来可能需要。我看到了对加密长度的引用,这让我感到不安。我们需要能够加密任何长度的消息(当然,在合理范围内!)。这是我需要担心的事情吗?如果是这样,有没有办法处理它?

如果可能的话,我宁愿不将公钥/私钥存储在 Windows 证书管理器中,但如果它使实现变得更加简单,那就这样吧。

我意识到 PKI 和加密是一个庞大而复杂的主题,但无论如何我希望有一个相对简单的库......(可以希望,对吗?)

谢谢!

4

2 回答 2

12

好吧,您没有提到内置类不能满足您的需求,那么System.Security.Cryptography.RSACryptoServiceProvider怎么样?

它具有大量合格的非对称加密/解密流的方法。

有几个教程/指南可以带您一路走好:

通过Google可以找到更多信息。

更新:关于长度限制,如果你只是在两边实现相同的缓冲区算法,加密和解密应该没有任何问题。

Update2:是的,我的示例是RSACryptoProvider ,但如果您想要公钥/私钥解决方案,您可以使用派生自System.Security.Cryptography.AsymmetricAlgorithm的任何类。或者建立你自己的......或者可能不是:)

于 2008-09-23T10:01:11.817 回答
0

是的,内置类有什么问题?

如果你不想使用 Windows 证书存储,你可以使用类似这样的东西

RSACryptoServiceProvider rscp = new RSACryptoServiceProvider();
rscp.FromXmlString("<RSAKeyValue><Modulus>key data gere</Modulus><Exponent></Exponent></RSAKeyValue>");

不过,不确定这对于私钥是否是个好主意。

这里有一个关于这个主题的很好的教程

于 2008-09-23T10:27:34.797 回答