編集
に変更$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