Java 什么是PHP';s md5(str,true)?

Java 什么是PHP';s md5(str,true)?,java,android,md5,Java,Android,Md5,我正在用以下行计算PHP中的MD5(获取更多信息): 我正在使用以下Java代码: byte[] bytesOfMessage = password.getBytes("UTF-8"); MessageDigest md = MessageDigest.getInstance("MD5"); byte[] thedigest = md.digest(bytesOfMessage); 上述代码返回的输出与PHP代码返回的输出不同 如何为Android/Java解决这个问题?生成完全相同的MD5,

我正在用以下行计算PHP中的MD5(获取更多信息):

我正在使用以下Java代码:

byte[] bytesOfMessage = password.getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] thedigest = md.digest(bytesOfMessage);
上述代码返回的输出与PHP代码返回的输出不同


如何为Android/Java解决这个问题?生成完全相同的MD5,原始输出不是散列字符串?

是的。我也有同样的问题。我找到了正确的方法:

这相当于PHP的
md5(密码,true)

与PHP的
md5(密码,false)
等效:


我也有同样的问题,这是我的Java程序代码:

public static String encryptPassword(String password) {
    String hash = null;
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(password.getBytes("UTF-8"));
        byte[] raw = md.digest();
        hash = (new BASE64Encoder()).encode(raw);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return hash;
}
这是我的php代码:

<?php
  $str = 'encodeIt';
  $toutf8 = utf8_encode($str);
  $var = md5($str,true);
  echo base64_encode($var);
?>


它们总是返回相同的散列。

检查这个答案,可能是Nawaz的重复,它返回散列字符串,我需要原始输出。@RahimRahimov:也许在变量名中不使用
加密的
?@zaph。固定的。“现在可以吗?”辛格:如果这个或任何答案都解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。hexArray[]从何而来?最终受保护的静态字符[]hexArray=“0123456789ABCDEF”。ToCharray();
public static String md5(String text) {
    try {
        MessageDigest digester = MessageDigest.getInstance("MD5");
        digester.update(text.getBytes());
        byte[] md5Bytes = digester.digest();
        String md5Text = null;

        md5Text = bytesToHex(md5Bytes);

        return md5Text;

    }
    catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    }
    return "";
}

public static String bytesToHex(byte[] bytes) {
    char[] hexChars = new char[bytes.length * 2];
    for (int j = 0; j < bytes.length; j++) {
        int v = bytes[j] & 0xFF;
        hexChars[j * 2] = hexArray[v >>> 4];
        hexChars[j * 2 + 1] = hexArray[v & 0x0F];
    }
    return new String(hexChars);
}
public String convertToBase64(byte[] bytes) {
    try {
        String base64 = Base64.encodeToString(bytes, Base64.DEFAULT);
        return base64;
    }
    catch (Exception e) {
    }
    return "";
}
public static String encryptPassword(String password) {
    String hash = null;
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(password.getBytes("UTF-8"));
        byte[] raw = md.digest();
        hash = (new BASE64Encoder()).encode(raw);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return hash;
}
<?php
  $str = 'encodeIt';
  $toutf8 = utf8_encode($str);
  $var = md5($str,true);
  echo base64_encode($var);
?>