3

大家早上好,

我正在使用 GWT 框架为我的公司开发 ERP,我将使用 Java Mail API 获取未读电子邮件的数量。我可以这样做,但问题是我将 SHA-512 散列密码存储在数据库中,我不会将明文密码传递给 Java Mail API,而只是将散列密码传递给避免在网络上传输明文密码。

我使用此代码来获取未读邮件的数量:

private static int getNumberOfUnreadMails() {
   int numberOfUnreadMails = 0;

    Properties properties = new Properties();
    properties.put("mail.imap.host", "myserver.com");
    properties.put("mail.imap.user", "developper@myserver.com");
    properties.put("mail.imap.socketFactory", 143);
    properties.put("mail.imap.socketFactory.class", "java.net.ssl.SSLSocketFactory");
    properties.put("mail.imap.port", 143);
    Session session = Session.getDefaultInstance(properties, new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("developper@myserver.com", "mypassword");
        }
    });
    Store store;
    try {
        store = session.getStore("imap");
        store.connect();
        Folder folder = store.getFolder("Inbox");
           numberOfUnreadMails = folder.getUnreadMessageCount();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return numberOfUnreadMails;
}

我还可以使用另一种散列算法。如果您知道我的问题的解决方案,请提前感谢您。

PS:对不起我的英语不好,我是法国人。

4

1 回答 1

0

您的 IMAP 服务器将需要未散列的密码才能进行身份验证。您可能已经在使用 SSL(如您设置的那样mail.imap.socketFactory.class),因此您的密码永远不会以明文形式发送。

顺便说一句:将 IMAP 与 SSL 与 javamail 一起使用的正确方法是使用imaps协议(并使用mail.imaps.*, 不使用 imap 协议并将 SSL 套接字工厂指定为套接字工厂。通常带有 SSL 端口的 IMAP 是 993,而不是 143 .

于 2013-02-03T15:31:25.230 回答