我只是用 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 得到另一个结果
最佳答案
伊拉克利斯应该是对的。 md5() 默认为您提供十六进制编码的输出字符串。您只能像在 Java 中那样通过为可选的 $raw_output 参数传入 TRUE 来获取未编码的字节。
the lengths range from 29 to 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;
}`
关于java - 如何将此 MD5 编码 PHP 转换为 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35883152/