在 apache shiro 中,默认的哈希实现如下:
MessageDigest digest = getDigest(getAlgorithmName());
if (salt != null) {
digest.reset();
digest.update(salt);
}
byte[] hashed = digest.digest(bytes);
int iterations = hashIterations - 1; //already hashed once above
//iterate remaining number:
for (int i = 0; i < iterations; i++) {
digest.reset();
hashed = digest.digest(hashed);
}
return hashed;
注意它是如何把盐放在第一位的。我们必须针对哈希是密码+盐而不是盐+密码的遗留系统进行身份验证
我目前正在此方法调用之外执行 concat 并将 null 传递给 salt。除了子类化和覆盖此方法之外,还有比我必须做的更好的方法吗?