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

时间:2009-10-01 13:29:27

标签: c# .net encryption cryptography

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

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

4 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:1)

我发现了an example如何在C#中解密PKCS#7。这可能足以让你开始。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

但是,我不相信它可以使用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