Segurança e Criptografia de Email
Criptografar/Descriptografar Mensagens
Aspose.Email fornece a funcionalidade de criptografar e descriptografar mensagens de email usando X509Certificates. Este artigo mostra como uma mensagem existente ou nova pode ser carregada e criptografada usando MailMessage. O Encrypt() e Decrypt() métodos retornam um MailMessage objeto para os efeitos aplicados e precisam ser considerados ao criptografar/descriptografar mensagens. Criptografar e descriptografar mensagens envolve as seguintes etapas:
- Criar uma nova mensagem ou carregar uma existente
- Carregar um certificado de criptografia usando o objeto X509Certificate
- Criptografar a mensagem usando o certificado
- Enviar a mensagem ou salvá‑la
- Descriptografar a mensagem conforme necessário
O trecho de código a seguir mostra como criptografar e descriptografar mensagens.
// 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");
Verificar Criptografia da Mensagem
Aspose.Email MailMessage classe permite que você verifique se uma mensagem está criptografada ou não. O IsEncrypted propriedade de MailMessage permite que você verifique isso como demonstrado no exemplo de código a seguir.
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);
Verificando Assinatura de Emails Seguros
O SecureEmailManager classe permite que você verifique a assinatura de objetos MailMessage seguros.
O SmimeResult classe armazena os resultados da verificação.
Os seguintes métodos da SecureEmailManager classe e um trecho de código permitirão que você processe uma assinatura:
- SecureEmailManager.CheckSignature(MailMessage msg) método.
- SecureEmailManager.CheckSignature(MailMessage msg, X509Certificate2 certificateForDecrypt) método.
- SecureEmailManager.CheckSignature(MailMessage msg, X509Certificate2 certificateForDecrypt, X509Store store) método.
Verifique a assinatura de uma mensagem sem fornecer um certificado:
var eml = MailMessage.Load(fileName);
var result = new SecureEmailManager().CheckSignature(eml);
Verifique a assinatura de uma mensagem criptografada fornecendo o certificado para descriptografia e o repositório que contém os certificados usados para a verificação:
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);
Assinar E‑mails com DKIM
Aspose.Email permite assinar Email com DKIM (DomainKeys Identified Mail). Isto permite que uma organização assuma a responsabilidade por uma mensagem em trânsito (Mais informações). DKIM adiciona uma assinatura digital aos cabeçalhos da mensagem de email que pode ser validada pelos destinatários. A chave pública do remetente permite que o receptor verifique se a assinatura corresponde ao conteúdo da mensagem. O DKIMSign método do MailMessage classe é usada para definir as informações criptográficas e de assinatura para assinar a mensagem. O trecho de código a seguir mostra como assinar emails com 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);