如何将此 MD5 编码 PHP 转换为 java


How to convert this MD5 encode PHP to java

>我只是用PHP编写了这样的代码

$hash = md5("testtesttest", TRUE);
echo $hash.'<br>';
$hash = md5($hash . "test", TRUE);
echo $hash.'<br>';

在 java 中使用 2 行 fisrt,它与我的代码配合得很好

    public static void main(String[] args) {
        // String str = new String(md5x16("test"));
        byte[] input = md5x16("testtesttest");
        String t = new String(input);
        System.out.println(t);
    }
    public static byte[] md5x16(String text) {
        try {
            MessageDigest digester = MessageDigest.getInstance("MD5");
            digester.update(text.getBytes());
            byte[] md5Bytes = digester.digest();
            return md5Bytes;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

但是在 PHP 的第 3 行和第 4 行中,我不能在 Java 中做同样的事情如果我解析为 String 并向其添加"测试",我将使用 PHP 获得另一个结果

伊拉克利斯应该是对的。 默认情况下,md5() 为您提供了一个十六进制编码的输出字符串。您只能像在 Java 中那样通过为可选的 $raw_output 参数传入 TRUE 来获取未编码的字节。

长度范围从 29 到 32

hexString.append( Integer.toHexString(0xFF & message[ i ] ) );
function makeBrokenMD5($s) {
$hash= md5($s, TRUE);
$bytes= preg_split('//', $hash, -1, PREG_SPLIT_NO_EMPTY);
$broken= '';
foreach ($bytes as $byte)
    $broken.= dechex(ord($byte));
return $broken;

}'