如何使用存储的散列密码通过 Javax 获取电子邮件?

How to fetch emails with Javax using stored hashed passwords?

这是我的情况:六个硬件设备将它们的数据发送到六个电子邮件地址(这部分不受我控制)。我需要在命令行应用程序中检索此数据。因为我到处都听说将明文密码存储在数据库或代码中是不好的做法,所以我想要求用户为每封电子邮件输入一次密码,并将其散列存储在数据库中。我使用 SSL 来加密我的应用程序和邮件服务器之间的流量。

因此,我的问题是:使用这些散列密码,如何使用 Javax 检索电子邮件?使用明文,我可以这样做:

Session session = Session.getDefaultInstance(props,
                new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("USER","PASSWORD");
                    }
                });

但是,从文档来看,PasswordAuthentication 仅适用于明文。我如何处理散列密码?

你不能。如果可以的话,它们就和明文密码一样好用了。

如果您的服务器支持,您可能需要考虑 OAuth2 authentication