在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并为salt传递null。除了子类化和重写这种方法之外,还有比我必须做的更好的方法吗?
答案 0 :(得分:2)
事实证明,继承SimpleHash并重写一个方法就可以了。只需重置摘要,然后加入盐然后将其消化,然后就可以了。