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

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

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

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

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

谢谢!

有帮助吗?

解决方案

好吧,你没有提到内置类不能满足你的需求,那么如何 System.Security.Cryptography.RSACryptoServiceProvider

它有一套很大的合格方法来对流进行非对称加密/解密。

有几个教程/指南可以帮助您:

http://www.codeproject.com/KB/security/RSACryptoPad.aspx

http://www.eggheadcafe.com/articles/20020630.asp

通过 Google 可以找到更多内容。

更新:关于长度限制,如果你只是在双方实施相同的缓冲算法,加密和解密,那就不应该有任何问题。

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

其他提示

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

如果您不想使用Windows证书存储,则可以使用此类

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

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

有一个关于这个主题的好教程此处

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top