加密库?

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

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

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

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

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

谢谢!

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

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

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

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

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

通过谷歌可以找到更多的东西。

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

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

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

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

RSACryptoServiceProvider rscp = new RSACryptoServiceProvider(); rscp.FromXmlString("key data gere"); 

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

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