3

在 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。除了子类化和覆盖此方法之外,还有比我必须做的更好的方法吗?

4

1 回答 1

2

事实证明,继承 SimpleHash 并覆盖一个方法就可以了。只需重置摘要,添加盐然后 pw 然后消化它,它工作正常

于 2011-04-02T19:46:50.757 回答