Bezpieczeństwo i szyfrowanie e‑maili

Szyfruj/Odszyfruj wiadomości

Aspose.Email zapewnia możliwość szyfrowania i odszyfrowywania wiadomości e‑mail przy użyciu X509Certificates. Ten artykuł pokazuje, jak istniejącą lub nową wiadomość można wczytać i zaszyfrować przy użyciu MailMessage. The Encrypt() i Decrypt() metody zwracają MailMessage obiekt dla zastosowanych efektów i należy o niego zadbać podczas szyfrowania/odszyfrowywania wiadomości. Szyfrowanie i odszyfrowywanie wiadomości obejmuje następujące kroki:

  1. Utwórz nową wiadomość lub załaduj istniejącą
  2. Wczytaj certyfikat szyfrowania przy użyciu obiektu X509Certificate
  3. Zaszyfruj wiadomość przy użyciu certyfikatu
  4. Wyślij wiadomość lub zapisz ją
  5. Odszyfruj wiadomość w razie potrzeby

Poniższy fragment kodu pokazuje, jak szyfrować i odszyfrowywać wiadomości.

// 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");

Weryfikacja szyfrowania wiadomości

Aspose.Email MailMessage klasa umożliwia sprawdzenie, czy wiadomość jest zaszyfrowana, czy nie. The IsEncrypted właściwość MailMessage umożliwia sprawdzenie tego, jak pokazano w poniższym przykładzie kodu.

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);

Sprawdzanie podpisu zabezpieczonych e‑maili

Ten SecureEmailManager klasa umożliwia sprawdzenie podpisu bezpiecznych obiektów MailMessage.

Ten SmimeResult klasa przechowuje wyniki sprawdzenia.

Poniższe metody klasy SecureEmailManager klasa i fragment kodu umożliwią przetworzenie podpisu:

Sprawdź podpis wiadomości bez podawania certyfikatu:

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

Sprawdź podpis zaszyfrowanej wiadomości, podając certyfikat do odszyfrowania oraz magazyn, w którym znajdują się certyfikaty użyte do weryfikacji:

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);

Podpisywanie e‑mail przy pomocy DKIM

Aspose.Email umożliwia podpisywanie e‑maili przy użyciu DKIM (DomainKeys Identified Mail). Daje to organizacji możliwość wzięcia odpowiedzialności za wiadomość będącą w tranzycie (Więcej informacji). DKIM dodaje cyfrowy podpis do nagłówków wiadomości e‑mail, który może być zweryfikowany przez odbiorców. Publiczny klucz nadawcy umożliwia odbiorcy sprawdzenie, że podpis odpowiada treści wiadomości. The DKIMSign metoda MailMessage klasa służy do ustawiania informacji kryptograficznych i podpisowych dla podpisywania wiadomości. Poniższy fragment kodu pokazuje, jak podpisać e‑maile przy użyciu 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);