1

我有一组用户。他们每个人都有相同的用户名密码组合。我的数据库中有加密的数据(见下面的代码)。问题是,处理整个用例的最佳和最安全的方法是什么?我只想在电子邮件中发送用户名 - 密码组合,向每个用户发送相同的电子邮件。我应该只是解码密码还是保存这段时间的文本密码,然后用户发送电子邮件并在此之后删除文本密码,或者您对此有什么想法?

我的软件中没有那么无价的数据,但仍然......

private Users hashPasswordBase64(Users currentUser) {

    try {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        String text = currentUser.getPassword();
        md.update(text.getBytes("UTF-8"));
        byte[] digest = md.digest();

        currentUser.setPassword(Base64.encode(digest));
    } catch (NoSuchAlgorithmException ex) {
        Logger.getLogger(UsersController.class.getName()).log(Level.SEVERE, null, ex);
    } catch (UnsupportedEncodingException ex) {
        Logger.getLogger(UsersController.class.getName()).log(Level.SEVERE, null, ex);
    }
4

2 回答 2

4

Betaaminos 几乎奠定了指导方针。

我建议将密码服务器端以编码格式存储,并且仅在有人尝试以个人身份登录时对其进行解码。

另一种选择(假设这是一个小规模的事情)是发送一个带有大量垃圾邮件字符的混淆密码(例如这里:http: //pastebin.com/hT1AVMUp)(这里是:http://pastebin。 com/9He1sk2m)并让他们在客户端对其进行解码。它不会击败任何人类,但它应该使解码程序变得更加困难。

于 2012-05-30T14:24:57.237 回答
2

我建议即时解码密码、发送电子邮件并处理变量。存储密码只会让木马更容易检索它。

除此之外,我建议提供用户在第一次登录后需要更改的密码。这样,用户就可以选择容易记住的密码,并且发送明文密码不会有任何问题,因为这在一次使用后就失效了。

于 2012-05-30T13:53:19.460 回答