加密库?

时间:2020-03-06 14:35:25  来源:igfitidea点击:

我的任务是在Cfor公司项目中实现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>");

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

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