0

文字列をmd5でエンコードする必要があり、それはバイトから2文字の16進エンコードです。

この短い JAVA スニペットがあり、PHP に変換する必要があります。

  // Condensed the message and do MD5
  try {
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] data = cleartext.getBytes(ENCODING);
    md.update(data);
    byte[] digestedByteArray = md.digest();
    // Convert digested bytes to 2 chars Hex Encoding
    md5String = HexUtils.bytesToHex(digestedByteArray);

  } catch (NoSuchAlgorithmException ns) {
    ns.printStackTrace();
  } catch (UnsupportedEncodingException ex) {
    ex.printStackTrace();
  }

PHPでこれを達成する方法がよくわかりません。ENCODINGUTF-8

私がPHPで持っているのは

$md5String = md5($clearText);
$hexString = "";

for($i = 0; $i < strlen($md5String); $i++) {
  $hexString .= dechex(ord($md5String[$i]));
}

しかし、出力が異なるので、16進変換に失敗していると思います。

では、この Java スニペットを PHP に適切に移植するにはどうすればよいでしょうか?

4

1 に答える 1

2

の出力md5はすでに 16 進数でエンコードされた文字列であるため、他に何もする必要はありません (オプションの 2 番目のパラメーターを に設定しない限りtrue)。

$hexString = md5($clearText);
于 2013-04-10T10:19:50.167 に答える