使用Shiro进行密码哈希和加盐处理

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;

请注意它首先放置盐。我们必须对遗留系统进行身份验证,在其中哈希值是密码+盐,而不是盐+密码。
目前我正在调用此方法之外进行连接,并传递null作为盐。除了子类化和覆盖此方法之外,是否有更好的方法可以做到我现在所做的?
1个回答

2

事实证明,子类化SimpleHash并覆盖一个方法就可以解决问题。只需重置摘要,添加盐,然后添加密码,再进行摘要处理即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接