Java MD5到PHP的转换


Java MD5 to PHP conversion

我有JAVA AES加密逻辑

private static byte[] getMD5(String input) {
        try {
       byte[] bytesOfMessage = input.getBytes("UTF-8");
            MessageDigest md = MessageDigest.getInstance("MD5");
            return md.digest(bytesOfMessage);
        } catch (Exception e) {
        }
        return null;
    }

这个函数的php等效函数是什么?我在php中使用了md5($string),但两种情况下的输出是不同的。

在您发布的代码中,您获得md5哈希的字节数组。PHP的md5()函数以十六进制形式返回md5哈希值。

所以,如果你想在java中得到md5哈希值,你可以像这样:

private static String getMD5(String input) {
   try {
       byte[] bytesOfMessage = input.getBytes("UTF-8");
       MessageDigest md = MessageDigest.getInstance("MD5");
       // byte array of md5 hash
       byte[] md5 = md.digest(bytesOfMessage);
       // we convert bytes to hex as php's md5() would do
       StringBuffer stringBuffer = new StringBuffer();
       for (int i = 0; i < md5.length; i++) {
          stringBuffer.append(Integer.toString((md5[i] & 0xff) + 0x100, 16).substring(1));
       }
       return stringBuffer.toString();
   } catch (Exception e) {
   }
   return null;
}

从PHP你可以得到行md5二进制执行md5('some string', true)。请参阅md5()函数文档。

要获得字节数组,您可以执行unpack('c*', md5('some string',true))。更多信息请参见unpack()函数和可能的格式。