在Apache Shiro中,默认的哈希实现如下:
请注意它首先放置盐。我们必须对遗留系统进行身份验证,在其中哈希值是密码+盐,而不是盐+密码。
目前我正在调用此方法之外进行连接,并传递null作为盐。除了子类化和覆盖此方法之外,是否有更好的方法可以做到我现在所做的?
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;
请注意它首先放置盐。我们必须对遗留系统进行身份验证,在其中哈希值是密码+盐,而不是盐+密码。
目前我正在调用此方法之外进行连接,并传递null作为盐。除了子类化和覆盖此方法之外,是否有更好的方法可以做到我现在所做的?