5

編集

に変更$checksum = md5($someString+$bkey);しました$checksum = md5($someString.$bkey);

Java で次の操作を実行する必要があります。

$hexString = '90aa';#sample value
$bkey = pack('H*',$hexString);
$someString='qwe';#sample value
$checksum  = md5($someString.$bkey);
echo $checksum;

Java で hexString を bkey に変換して、php スクリプトと同じ結果を得ることができません。bkeyすべてが正常に機能していることを除いて。

私が削除しbkeyた場合:

PHP:

$someString='qwe';#sample value
$checksum  = md5($someString);
echo $checksum;

結果:76d80224611fc919a5d54f0ff9fba446

ジャワ:

String someString = "qwe";
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        String checksum = new BigInteger(1, messageDigest.digest(someString
                .getBytes())).toString(16);
        System.out.println(checksum);

結果:76d80224611fc919a5d54f0ff9fba446

ご覧のとおり、動作します

bkey:

PHP:

$hexString = '90aa';#sample value
$bkey = pack('H*',$hexString);
$someString='qwe';#sample value
$checksum  = md5($someString.$bkey);
echo $checksum;

結果:18f5f1a9bf898131945dd9e315759fe4

ジャワ:

public static void main(String[] args) throws NoSuchAlgorithmException {
        String hexString = "90aa";
        String bkey = hexToString(hexString);
        String someString = "qwe";
        MessageDigest messageDigest = MessageDigest.getInstance("MD5");
        String input = someString + bkey;
        String checksum = new BigInteger(1, messageDigest.digest(input
                .getBytes())).toString(16);
        System.out.println(checksum);
    }
    public static String hexToString(String hex) {
        StringBuilder output = new StringBuilder();
        for (int i = 0; i < hex.length(); i += 2) {
            String str = hex.substring(i, i + 2);
            output.append((char) Integer.parseInt(str, 16));
        }
        return output.toString();
    }

結果:44bb634dee436833dd65caa5043ffeb9

ご覧のとおり、結果は異なります。

同じ結果を得るために変換hex Stringする方法は?String

4

1 に答える 1