我需要在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中实现这一点。 ENCODING
为UTF-8
我在PHP中拥有的是
$md5String = md5($clearText);
$hexString = "";
for($i = 0; $i < strlen($md5String); $i++) {
$hexString .= dechex(ord($md5String[$i]));
}
但是输出是不同的,所以我认为我没有进行十六进制转换。
那么这个JAVA片段到PHP的正确端口是什么?
答案 0 :(得分:2)
md5
的输出已经是十六进制编码的字符串,因此您无需做任何其他事情(只要您不将可选的第二个参数设置为true
)。 / p>
$hexString = md5($clearText);