0

我需要在 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 的正确端口是什么?

4

1 回答 1

2

的输出md5已经是一个十六进制编码的字符串,所以你不需要做任何其他事情(只要你不将可选的第二个参数设置为true)。

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