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() 函数 returns 十六进制的 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() function and the possible formats