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