E-posta Güvenliği ve Şifreleme

Mesajları Şifrele/Şifre Çöz

Aspose.Email, X509Certificates kullanarak e-posta mesajlarını şifreleme ve şifre çözme imkanı sağlar. Bu makale, mevcut ya da yeni bir mesajın nasıl yükleneceğini ve şu kullanılarak şifreleneceğini gösterir MailMessage. The Encrypt() ve Decrypt() yöntemler bir MailMessage uygulanan etkiler için nesne ve mesajları şifrelerken/şifre çözerken dikkate alınmalıdır. Mesajları şifreleme ve şifre çözme aşağıdaki adımları içerir:

  1. Yeni bir mesaj oluştur veya mevcut birini yükle
  2. X509Certificate nesnesiyle bir şifreleme sertifikası yükle
  3. Sertifika kullanarak mesajı şifrele
  4. Mesajı gönder veya kaydet
  5. Mesajı gerektiği gibi çöz

Aşağıdaki kod parçacığı, mesajları nasıl şifreleyeceğinizi ve şifresini çözeceğinizi gösterir.

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

Mesaj Şifrelemesini Doğrula

Aspose.Email MailMessage sınıf, bir mesajın şifreli olup olmadığını kontrol etmenizi sağlar. IsEncrypted özelliği MailMessage aşağıdaki kod örneğinde gösterildiği gibi bunu kontrol etmenizi sağlar.

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

Güvenli E-postaların İmzasını Kontrol Etme

Bu SecureEmailManager sınıf, güvenli MailMessage nesnelerinin imzasını kontrol etmenizi sağlar.

Bu SmimeResult sınıf, kontrol sonuçlarını depolar.

Aşağıdaki yöntemler, SecureEmailManager sınıf ve bir kod parçacığı, bir imzayı işlemeyi sağlayacaktır:

Bir sertifika sağlamadan mesajın imzasını kontrol edin:

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

Şifreli bir mesajın imzasını, şifreleme için sertifika ve doğrulama için kullanılan sertifikaları içeren mağazayı sağlayarak kontrol edin:

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

E-postaları DKIM ile İmzala

Aspose.Email, DKIM (DomainKeys Identified Mail) ile e-posta imzalamayı sağlar. Bu, bir organizasyonun (Daha Fazla Bilgi). DKIM, alıcılar tarafından doğrulanabilen e-posta başlıklarına dijital bir imza ekler. Gönderenin açık anahtarı, alıcının imzanın mesaj içeriğiyle eşleştiğini doğrulamasını sağlar.  DKIMSign metodu MailMessage sınıf, mesajı imzalamak için kriptografik ve imza bilgilerini ayarlamak amacıyla kullanılır. Aşağıdaki kod parçacığı, DKIM ile e-postaları nasıl imzalayacağınızı gösterir.

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