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
进行比较
我觉得你也可以:
- salt+hash (eg: sha256) 存储之前的密码,同时保存
盐。随机生成的盐更好。
- 使用保存的盐 + 重新散列用户输入的密码。
- 简单比较一下。如果它们匹配,则您授予用户访问权限
在我的应用程序中,有一些操作只有授权用户输入密码才能进行。所以我需要将加密密码存储在一个文件中,然后在需要时读取加密密码并将其与输入的密码进行比较。我以前从未做过类似的事情,我需要最简单的方法来做到这一点。在这里我找到了 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
我觉得你也可以:
- salt+hash (eg: sha256) 存储之前的密码,同时保存 盐。随机生成的盐更好。
- 使用保存的盐 + 重新散列用户输入的密码。
- 简单比较一下。如果它们匹配,则您授予用户访问权限