用于第三方集成的双向密码加密

时间:2012-07-16 10:07:28

标签: java security email imap javamail

我的代码需要连接到IMAP和SMTP服务器以定期发送和接收电子邮件,目前每3分钟左右发送一次。典型的用户流程如下

  1. 登录
  2. 通过提供您的IMAP和SMTP详细信息(包括emailId和密码)来整合您的电子邮件。
  3. 转到数据
  4. 在后台,我运行一个石英调度程序,定期从IMAP服务器中提取电子邮件。 Web UI和quartz调度程序在单独的VM中运行,并在REST上相互通信。

    在这种情况下保护用户电子邮件凭据的好方法是什么?一种方式散列无济于事,因为我永远不想再问用户他的密码,但我需要提供凭证以连接IMAP

2 个答案:

答案 0 :(得分:1)

当然,确保密码安全的最佳方法是“不返回原始密码”,但这超出了这个问题的范围: - )

话虽如此,您最好的选择是使用仅存在于服务器上的私钥(但不与应用程序一起部署)在应用程序代码端加密密码。您可以查看Jasypt,它是Java加密的工具。此外,您可能需要考虑将密钥的密码分为两部分:一部分来自属性文件中的某个配置文件,另一部分来自(可能是)数据库本身。

答案 1 :(得分:0)

如果应用程序在客户端的计算机上运行,​​则使用用户选择的主密码加密密码。这允许用户锁定应用程序。

如果应用程序在服务器上运行,请确保通过HTTPS发送密码,或者最低限度地使用非对称公钥对密码进行加密,并在服务器上对其进行解密。

使用私钥存储使用AES或其他一些好的加密算法加密的密码,只是为了防止以纯文本格式存储它们。