【问题标题】:How to convert this MD5 encode PHP to java如何将此 MD5 编码 PHP 转换为 java
【发布时间】:2016-03-09 04:52:25
【问题描述】:

我只是在 PHP 中编写了这样的代码

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

在 java 中使用 2 行代码,我的代码运行良好

    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 得到另一个结果

【问题讨论】:

    标签: java php md5


    【解决方案1】:

    伊拉克利斯应该是对的。 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;
    

    }`

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多