繁体   English   中英

在C#中解密PKCS#7消息

[英]Decrypt PKCS#7 Message in C#

我在EnvelopedCms实例中有一条PKCS#7消息。

我也有从证书加载的私钥。

解密EnvelopedCms.RecipientInfos[0].EncryptedKey (带有私钥)后,是否有办法在托管的解密算法中使用会话密钥对EnvelopedCms.ContentInfo.Content进行解密?

PS:我不想使用EnvelopedCms.Decrypt() ,我知道它存在,但我不想使用它。

检查EnvelopedCms.ContentEncryptionAlgorithm.Oid.FriendlyName属性很容易知道使用哪种算法对内容进行加密。 Outlook用户从(选项->信任中心->信任中心设置->电子邮件安全->加密电子邮件->默认设置)中选择加密算法。 由于加密算法通常是对称算法,因此通常需要KeySize,BlockSize,SymmetricKey和Initial Vector。 从算法中可以知道BlockSize的值。 可以从算法名称(例如AES256表示KeySize为256)或通过检查EnvelopedCms.ContentEncryptionAlgorithm.KeyLength的值知道KeySize。 SymmetricKey由假设给出。 初始向量位于EnvelopedCms.ContentEncryptionAlgorithm.Parameters

但是,您必须注意内容的填充或抛出“数据长度无效”异常。 因此,在尝试使用对称密码解密之前,必须修剪6个字符的填充, 但是,我没有权威的资源来说明为什么这6个零字符存在,并且是否可以安全地假设它们总是修剪。

对于RC2-64算法,KeyLength属性返回0,因此请确保在调用密码之前将KeySize属性设置为64。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM