在我的应用程序中,只有授权用户输入密码才允许执行某些操作。因此,我需要将加密的密码存储在文件中,然后在需要时读取加密的密码并将其与输入的密码进行比较。我之前从未做过类似的事情,我需要最简单的方法来做到这一点。在这里我找到了this教程,但后来我发现最好不要使用sun.misc.BASE64Decoder / Encoder。你能帮忙吗?
答案 0 :(得分:3)
您可以存储密码,而不是存储密码。为了将其与另一个密码进行比较,您应该比较哈希值,而不是真实密码。使用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 :(得分:2)
我想你也可以: 1. salt + hash(例如:sha256)存储之前的密码,也保存盐。随机生成的盐更好。 2.使用保存的盐+重新输入用户输入的密码。 3.简单比较一下。如果匹配,则授予用户访问权限
答案 2 :(得分:0)