我正在从 Java 中的给定密码创建哈希并将其存储到 MySQL 数据库中。我已经阅读了很多关于在数据库中存储盐的内容,但有几个原因我选择不在这里。似乎没有办法从黑客那里完全隐藏每个用户特定的随机盐,也没有办法隐藏我有一个托管数据库和可下载软件。因为这个软件只在内部使用,它最多有 20 个用户,Hacker更容易偶然发现数据库端口而不是软件。至少通过在软件中生成盐而不是将其存储在数据库中,他需要找到软件来反编译并确定盐/哈希方法。
这是我正在使用的方法:
public static byte[] getHash(String password) throws NoSuchAlgorithmException {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
byte[] passBytes = password.getBytes();
byte[] salt = digest.digest(passBytes);
byte[] digestable = new byte[passBytes.length + salt.length];
System.arraycopy(passBytes, 0, digestable, 0, passBytes.length);
System.arraycopy(salt, 0, digestable, passBytes.length, salt.length);
return digest.digest(digestable);
}
编辑: 把这个放在这里
我看到我需要生成一个随机盐,我现在可以存储它。