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を実行しており、saltにnullを渡しています。このメソッドをサブクラス化してオーバーライドする以外に、私がしなければならないことよりも良い方法はありますか?

4

1 に答える 1

2

SimpleHash をサブクラス化し、1 つのメソッドをオーバーライドするとうまくいくことがわかりました。ダイジェストをリセットし、salt を追加してから pw を追加してからダイジェストすると、正常に動作します

于 2011-04-02T19:46:50.757 に答える