如何将这个MD5编码PHP转换为java

时间:2016-03-09 04:52:25

标签: java php md5

我只是用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并添加&#34; test&#34;对它来说,我将用PHP获得另一个结果

1 个答案:

答案 0 :(得分:2)

Iraklis应该是对的。默认情况下,md5()为您提供十六进制编码的输出字符串。您只能通过为可选的$ raw_output参数传递TRUE来获取Java中未编码的字节。

  

长度范围从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;

}`