2

ソルトの有無にかかわらず、SHA(128,256,512)にエンコードするためのメソッドを作成しようとしています。塩を使わない方法は

private static String crypt(String chain, String method) {
    MessageDigest md;
    try {
        md = MessageDigest.getInstance(method);
        md.update(chain.getBytes("UTF-8"));
        byte[] mb = md.digest();
        String out = "";
        for (int i = 0; i < mb.length; i++) {
            byte temp = mb[i];
            String s = Integer.toHexString(new Byte(temp));
            while (s.length() < 2) {
                s = "0" + s;
            }
            s = s.substring(s.length() - 2);
            out += s;
        }
        return out;

    } catch (Exception e) {
        System.out.println("ERROR: " + e.getMessage());
    }
    return null;
}

メソッドができる場所

private final static String MD5="MD5";
private final static String SHA_128="SHA-1";
private final static String SHA_256="SHA-256";
private final static String SHA_384="SHA-384";

ただし、メソッドcrypt(String chain、String salt、String method)も必要です。行を次のように変更してみました:

byte[] mb=md.digest(salt.getBytes("UTF-8");

ただし、正しいチェーンは返されません(php呼び出しhash_hmac('sha256'、'pass'、'salt')と比較して)。どうすればそれを修正できますか、またはそれらのアルゴリズムのオプションのソルトを使用したメソッドをどこで見つけることができますか?ありがとう

4

1 に答える 1

3

これらの 2 行の PHP はどのように異なるのでしょうか? を参照してください。HMACとソルトで連結するだけの違いについて。

于 2012-04-30T22:22:44.783 に答える