我的任务是在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
通过谷歌可以找到更多的东西.
更新:关于长度限制,如果你只是在双方实施相同的缓冲算法,加密和解密,那应该不会有任何问题.
Update2:是的,我的例子是RSACryptoProvider,但如果你想要一个公钥/私钥解决方案,你可以使用派生自System.Security.Cryptography.AsymmetricAlgorithm的任何类.或建立自己的......或许不是:)