C# 在C语言中封装/解密大型PKCS#7(.p7m)字节数组#

C# 在C语言中封装/解密大型PKCS#7(.p7m)字节数组#,c#,.net,security,encryption,cryptography,C#,.net,Security,Encryption,Cryptography,我正在使用.net framework 4.5和.net System.Security.Cryptography库对一个大的.p7m文件进行解密,文件大小约为70mb。.p7m文件已转换为字节数组,我想使用EnvelopedCms类来解码.p7m字节数组。但是,在执行envelopedCms.Decode(p7mByteArray)时需要很长的执行时间(大约3xx秒) 如果envelopedCms.Decode()是一个大字节数组,如何提高它的性能 envelopedCms.Decode()是

我正在使用.net framework 4.5和.net System.Security.Cryptography库对一个大的.p7m文件进行解密,文件大小约为70mb。.p7m文件已转换为字节数组,我想使用EnvelopedCms类来解码.p7m字节数组。但是,在执行envelopedCms.Decode(p7mByteArray)时需要很长的执行时间(大约3xx秒)

  • 如果envelopedCms.Decode()是一个大字节数组,如何提高它的性能
  • envelopedCms.Decode()是否支持.net framework 4.5中字节数组上的流式处理
  • 是否有其他替代方案可以更快地解码封装字节数组
    谢谢。

    这就是为什么使用对称加密技术对大数据进行加密,而非对称公钥-私钥加密仅用于保护对称密钥和签名/消息身份验证码。@BenVoigt CMS已经执行了混合加密。在SPCW中,最好以字节为单位发布CMS消息的第一个字节,这样我们就可以从报头中检索使用的算法。另外:执行速度也取决于它所使用的计算机,请张贴规格。最后:在没有virusscanner的情况下也进行测试。Bouncy Castle(用于C#)包含一个流式API(根据发行说明,它似乎在2007年进行了优化)。@MaartenBodewes我已经尝试过用于C#的Bouncy Castle,它的性能比.net加密库(几秒钟)要好。但是,由于某些原因,我的证书必须标记为不可导出,从.net X509Store检索的私钥无法转换为bouncy castle key对象,因此我无法使用bouncy castle进行加密/解密。即使BC for C#不是Java版本的加密服务提供商,您仍然可以重写(开源)库使用.NET framework中定义的私钥操作。不过,对于70MB,任何接近300秒的时间都是多余的。在一个非常小的文件上执行需要多长时间(只是为了看看什么需要更多的资源:私钥操作还是处理字节本身)?
    byte[] p7mByteArray = File.ReadAllBytes(ATTACHMENT_PATH);
    EnvelopedCms envelopedCms = new EnvelopedCms();
    envelopedCms.Decode(p7mByteArray);