文字列を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でこれを達成する方法がよくわかりません。ENCODING
はUTF-8
私がPHPで持っているのは
$md5String = md5($clearText);
$hexString = "";
for($i = 0; $i < strlen($md5String); $i++) {
$hexString .= dechex(ord($md5String[$i]));
}
しかし、出力が異なるので、16進変換に失敗していると思います。
では、この Java スニペットを PHP に適切に移植するにはどうすればよいでしょうか?