Java MD5到PHP的转换

时间:2015-08-20 06:40:04

标签: java php aes md5

我有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)但两种情况下的输出都不同。

1 个答案:

答案 0 :(得分:1)

在您发布的代码中,您将获得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('some string', true)获取行md5二进制文件。请参阅md5()有关它的功能文档。

要获取字节数组,您可以unpack('c*', md5('some string',true))。有关详细信息,请参阅unpack()函数和可能的formats