加密库?
我的任务是在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 ");
不过,不确定这对于私钥是个好主意。
这里有一个关于这个主题的好教程