Имейл сигурност и криптиране

Криптиране/Декриптиране на съобщения

Aspose.Email предоставя възможност за криптиране и декриптиране на имейл съобщения с помощта на X509Certificates. Тази статия показва как съществуващо или ново съобщение може да се зареди и криптира, използвайки MailMessage. The Encrypt() и Decrypt() методите връщат MailMessage обект за приложените ефекти и трябва да се обърне внимание при криптиране/декриптиране на съобщения. Криптирането и декриптирането на съобщения включва следните стъпки:

  1. Създайте ново съобщение или заредете съществуващо
  2. Заредете сертификат за криптиране, използвайки обекта X509Certificate
  3. Криптирайте съобщението с помощта на сертификата
  4. Изпратете съобщението или го запишете
  5. Декриптирайте съобщението при необходимост

Следният кодов фрагмент ви показва как да криптирате и декриптирате съобщения.

// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Email();

string publicCertFile = dataDir + "MartinCertificate.cer";
string privateCertFile = dataDir + "MartinCertificate.pfx";

X509Certificate2 publicCert = new X509Certificate2(publicCertFile);
X509Certificate2 privateCert = new X509Certificate2(privateCertFile, "anothertestaccount");

// Create a message
MailMessage msg = new MailMessage("atneostthaecrcount@gmail.com", "atneostthaecrcount@gmail.com", "Test subject", "Test Body");

// Encrypt the message
MailMessage eMsg = msg.Encrypt(publicCert);
if (eMsg.IsEncrypted == true)
    Console.WriteLine("Its encrypted");
else
    Console.WriteLine("Its NOT encrypted");

// Decrypt the message
MailMessage dMsg = eMsg.Decrypt(privateCert);
if (dMsg.IsEncrypted == true)
    Console.WriteLine("Its encrypted");
else
    Console.WriteLine("Its NOT encrypted");

Проверка на криптиране на съобщение

Aspose.Email MailMessage клас, който ви позволява да проверите дали съобщението е криптирано или не. The IsEncrypted свойство на MailMessage ви позволява да проверите това, както е показано в следния примерен код.

MailMessage mailMessageOrig = MailMessage.Load(Path.Combine(dataDir, "Message.msg"), new MsgLoadOptions());
X509Certificate2 publicCert = new X509Certificate2(publicCertFile);
X509Certificate2 privateCert = new X509Certificate2(privateCertFile, "anothertestaccount");

Console.WriteLine("Message is encrypted: {0}" , mailMessageOrig.IsEncrypted);
MailMessage mailMessage = mailMessageOrig.Encrypt(publicCert);
Console.WriteLine("Message is encrypted: {0}", mailMessage.IsEncrypted);
mailMessage = mailMessage.Decrypt(privateCert);
Console.WriteLine("Message is encrypted: {0}", mailMessage.IsEncrypted);

Проверка на подписа на сигурни имейли

Този SecureEmailManager клас, който ви позволява да проверите подписа на защитени MailMessage обекти.

Този SmimeResult клас, който съхранява резултатите от проверката.

Следните методи на SecureEmailManager клас и примерен код ще ви позволят да обработите подпис:

Проверете подписа на съобщение без предоставяне на сертификат:

var eml = MailMessage.Load(fileName);
var result = new SecureEmailManager().CheckSignature(eml);

Проверете подписа на криптирано съобщение, като предоставите сертификат за декриптиране и хранилището, което съдържа сертификатите, използвани за проверка:

var certFileName = "cert.pfx";
var cert = new X509Certificate2(certFileName, "pass");
var eml = MailMessage.Load(fileName);

var store = new X509Store();
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();

var result = new SecureEmailManager().CheckSignature(eml, cert, store);

Подписване на имейли с DKIM

Aspose.Email позволява подписване на имейли с DKIM (DomainKeys Identified Mail). Това позволява на организацията да поеме отговорност за съобщение, което е в транзит (Повече информация). DKIM добавя цифров подпис към заглавките на имейл съобщението, който може да бъде валидиран от получателите. Публичният ключ на подателя позволява на получателя да провери, че подписът съответства на съдържанието на съобщението. The DKIMSign метод на MailMessage клас, който се използва за задаване на криптографска и подписна информация за подписване на съобщението. Следният фрагмент от код показва как да подпишете имейли с DKIM.

var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text");

string privateKeyFile = "key2.pem";
RSACryptoServiceProvider rsa = PemReader.GetPrivateKey(privateKeyFile);
DKIMSignatureInfo signInfo = new DKIMSignatureInfo("test", "somedomain.com");

var signedEml = eml.DKIMSign(rsa, signInfo);