在java中使用附件加密电子邮件

时间:2015-02-26 15:36:03

标签: java email encryption javamail

我的项目是创建简单的邮件客户端,处理基本操作,如发送邮件和从收件箱中读取。但是我希望通过一些加密使它更安全。 我知道一些关于使用内置javax.crypto的加密。此外,我已经成功开发了带有java邮件库的非加密邮件客户端 哦,是的,我也检查了bouncy castle和java-mail加密。

这是我的代码

public void send(...) {
// some config on mail props
// .....

Message message = ...;
message.setContent(multipart, "multipart");
MTPTransport smtpTransport = (SMTPTransport) session.getTransport("smtps");
smtpTransport.connect(host, username, password);

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, true));
smtpTransport.sendMessage(message, message.getAllRecipients());
....
}

此时,我开始思考我必须加密" multipart"对象,如:

message.setContent(AESEncrypt.encryptObject(multipart), "multipart");
阅读邮件方法等等,会有解密对象。 或者是什么?

这是我加密方法的一部分

public SealedObject encryptObject(Multipart multipart) {
SealedObject sealedObject = null;
Key secretKey = generateKey(startingKey);
Cipher c = Cipher.getInstance(ALGORITHM);
c.init(Cipher.ENCRYPT_MODE, secretKey);
sealedObject = new SealedObject(multipart, c);
return sealedObject;
}

我曾经读过我们首先需要序列化对象才能加密。好吧,多部分不是序列化对象 我弄错了吗?你有更好的建议/推荐,哪种方式更好? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您不需要java.io.Serializable对象,只需要将对象“序列化”,在这种情况下意味着将其转换为MIME格式的字节流。

您可以找到here所述的Bouncy Castle示例,并可以从this page下载其他一些示例。最好的办法是从其中一个示例程序开始。

相关问题