Bảo Mật và Mã Hoá Email

Mã Hoá/Giải Mã Tin Nhắn

Aspose.Email cung cấp khả năng mã hoá và giải mã tin nhắn email bằng X509Certificates. Bài viết này cho thấy cách tải và mã hoá một tin nhắn hiện có hoặc mới bằng MailMessage. Thuộc tính Encrypt() và Decrypt() các phương thức trả về một MailMessage đối tượng cho các hiệu ứng được áp dụng và cần được lưu ý khi mã hoá/giải mã tin nhắn. Mã hoá và giải mã tin nhắn bao gồm các bước sau:

  1. Tạo tin nhắn mới hoặc tải một tin nhắn hiện có
  2. Tải chứng chỉ mã hoá bằng đối tượng X509Certificate
  3. Mã hoá tin nhắn bằng chứng chỉ
  4. Gửi tin nhắn hoặc lưu nó
  5. Giải mã tin nhắn khi cần

Đoạn mã dưới đây cho bạn cách mã hoá và giải mã tin nhắn.

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

Xác Minh Mã Hoá Tin Nhắn

Aspose.Email MailMessage lớp cho phép bạn kiểm tra xem một tin nhắn có được mã hoá hay không. The IsEncrypted thuộc tính của MailMessage cho phép bạn kiểm tra điều này như trong mẫu mã sau.

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

Kiểm Tra Chữ Ký Email Bảo Mật

Cái SecureEmailManager lớp cho phép bạn kiểm tra chữ ký của các đối tượng MailMessage an toàn.

Cái SmimeResult lớp lưu trữ kết quả của việc kiểm tra.

Các phương thức sau của SecureEmailManager lớp và một đoạn mã sẽ cho phép bạn xử lý một chữ ký:

Kiểm tra chữ ký của một tin nhắn mà không cung cấp chứng chỉ:

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

Kiểm tra chữ ký của một tin nhắn được mã hoá bằng cách cung cấp chứng chỉ để giải mã và kho chứa các chứng chỉ dùng để xác thực:

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

Ký Email bằng DKIM

Aspose.Email cho phép ký Email bằng DKIM (DomainKeys Identified Mail). Điều này cho phép một tổ chức chịu trách nhiệm cho một tin nhắn đang trong quá trình chuyển (Thêm Thông Tin). DKIM thêm một chữ ký số vào tiêu đề tin nhắn email có thể được người nhận xác thực. Khóa công khai của người gửi cho phép người nhận kiểm chứng rằng chữ ký khớp với nội dung tin nhắn. The DKIMSign phương thức của MailMessage lớp được sử dụng để đặt thông tin mật mã và chữ ký cho việc ký tin nhắn. Đoạn mã mẫu dưới đây cho bạn biết cách ký email bằng 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);