C# 如何使用SMIME OpenSSL.NET加密

C# 如何使用SMIME OpenSSL.NET加密,c#,openssl,C#,Openssl,客户端正在使用OpenSSL加密大文件(~1MB)。他正在使用SMIME: openssl.exe smime -encrypt -des3 -in "plaintestFile.txt" -out "encryptedFile.txt" "certificate.pem" >> "log_encrypt.txt" 现在我需要在C#app中做同样的事情。我发现了一个.Net OpenSSL包装器: 到目前为止,我已从文件中加载PEM证书: public static void g

客户端正在使用OpenSSL加密大文件(~1MB)。他正在使用SMIME:

openssl.exe smime -encrypt -des3 -in "plaintestFile.txt" -out "encryptedFile.txt" "certificate.pem" >> "log_encrypt.txt" 
现在我需要在C#app中做同样的事情。我发现了一个.Net OpenSSL包装器:

到目前为止,我已从文件中加载PEM证书:

public static void getCert()
    {
        OpenSSL.X509.Configuration cfg = new OpenSSL.X509.Configuration(@"D:\openssl-0.9.8k_X64\openssl.cnf");

        string rootcerts = System.IO.File.ReadAllText(@"D:\cert.pem");

        BIO certbio = new BIO(rootcerts);
        OpenSSL.X509.X509Certificate cert = new OpenSSL.X509.X509Certificate(certbio);
    }

但是我找不到如何在这个包装中使用SMIME。帮助?

这可以通过商业产品中的OpenSslSmime类来完成:

免责声明:我为DidiSoft工作

SMIME实际上是PKCS#7(有些人放弃了)。上次我检查OpenSSL.Net中有一个
PKCS7.cs
。因此,请看下面的问题,如。
DidiSoft.OpenSsl.Cms.OpenSslSmime smime = new DidiSoft.OpenSsl.Cms.OpenSslSmime();
smime.EncryptFile("plaintestFile.txt", "certificate.pem", @"encryptedFile.txt", CmsCipherAlgorithm.Des3);