PHP相当于JAVA HexUtils.bytesToHex()

时间:2013-04-10 10:18:06

标签: java php character-encoding

我需要在md5中编码一个字符串,然后将其字节编码为2个字符的十六进制编码。

我有这个简短的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]));
}

但是输出是不同的,所以我认为我没有进行十六进制转换。

那么这个JAVA片段到PHP的正确端口是什么?

1 个答案:

答案 0 :(得分:2)

md5的输出已经是十六进制编码的字符串,因此您无需做任何其他事情(只要您不将可选的第二个参数设置为true)。 / p>

$hexString = md5($clearText);