Java:如何write/read加密密码in/from一个文件

Java: how to write/read encrypted password in/from a file

在我的应用程序中,有一些操作只有授权用户输入密码才能进行。所以我需要将加密密码存储在一个文件中,然后在需要时读取加密密码并将其与输入的密码进行比较。我以前从未做过类似的事情,我需要最简单的方法来做到这一点。在这里我找到了 this 教程,但后来我发现最好不要使用 sun.misc.BASE64Decoder/Encoder。你能帮忙吗?

看这里:Encrypt Password in Configuration Files? and perhaps here: https://crackstation.net/hashing-security.htm

您可以存储它的哈希值而不是存储密码。为了将它与另一个密码进行比较,您应该比较哈希值,而不是真正的密码。制作散列(加盐)的简单方法是使用 MessageDigest:

public byte[] makeDigest(String value, byte[] salt) throws NoSuchAlgorithmException {
    MessageDigest md = MessageDigest.getInstance("SHA-256");
    md.update(salt);
    return md.digest(value.getBytes());
}

您可以对密码进行摘要,然后将生成的字节数组(和盐)存储在文件中。然后使用此方法(和原始盐)从第二个密码进行摘要。最后将两个字节数组与 Arrays.equals

进行比较

我觉得你也可以:

  1. salt+hash (eg: sha256) 存储之前的密码,同时保存 盐。随机生成的盐更好。
  2. 使用保存的盐 + 重新散列用户输入的密码。
  3. 简单比较一下。如果它们匹配,则您授予用户访问权限