我有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()函数和可能的格式。