在C#中解密PKCS#7加密数据

我正在研究一种需要解密PKCS#7加密数据的解决方案,最好是在C#中。 据我所知,.NET api通过System.Security.Cryptography.Pkcs命名空间支持这一点。 但是,似乎实现只能在字节数组上工作。 那么当我有一个不适合内存的大型加密文件时,我该怎么办?

我在这里遗漏了什么,或者是否有另一种方法在Stream级别上执行此操作而不是使用bytearrays?

.NET框架仅对PKCS#7 / CMS提供基本支持,因此它不支持流式传输数据。

你需要一个第三方图书馆。 正如其他人所说,BouncyCastle是一个很好的选择。 它确实支持PKCS#7(PKCS#7也称为CMS)。

他们的测试可能是查找示例代码的好地方: EnvelopedDataStreamTest.cs 。

我找到了一个如何在C#中解密PKCS#7 的例子 。 这可能足以让你入门。

2.0版的.Net Framework提供了pkcs命名空间,可以帮助我们在pkcs#7标准中进行签名/加密/解密。 请参考这里的概述http://msdn.microsoft.com/en-us/library/bb885086.aspx ,这里有一个很好的例子http:** msdn.microsoft.com/en-us/library/bb924565.aspx 。

您是否可以选择更改为使用BouncyCastle API,来自http://www.bouncycastle.org/csharp/ ,因为它使用流进行解密。

但是,我不相信它可以使用PKCS#7加密数据,因此您还需要使用BouncyCastle进行加密。

以下是使用此API的示例: http : //elian.co.uk/post/2009/07/29/Bouncy-Castle-CSharp.aspx

如果你想使用.NET的东西,这可能是有用的: http : //www.geekpedia.com/tutorial227_Encrypting-and-Decrypting-Files-with-Csharp.html