Java:如何在文件中写入/读取加密密码

时间:2015-01-09 15:38:31

标签: java encryption

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

3 个答案:

答案 0 :(得分:3)

您可以存储密码,而不是存储密码。为了将其与另一个密码进行比较,您应该比较哈希值,而不是真实密码。使用MessageDigest

进行哈希(使用salt)的简单方法
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 :(得分:2)

我想你也可以: 1. salt + hash(例如:sha256)存储之前的密码,也保存盐。随机生成的盐更好。 2.使用保存的盐+重新输入用户输入的密码。 3.简单比较一下。如果匹配,则授予用户访问权限

答案 2 :(得分:0)