امنیت و رمزگذاری ایمیل

رمزگذاری/رمزگشایی پیام‌ها

Aspose.Email امکان رمزگذاری و رمزگشایی پیام‌های ایمیل با استفاده از X509Certificates را فراهم می‌کند. این مقاله نشان می‌دهد چگونه یک پیام موجود یا جدید می‌تواند بارگذاری و با استفاده از MailMessage. این 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);