В коде, который вы опубликовали, вы получаете массив байтов хеша md5. Функция md5() PHP возвращает хеш md5 как шестнадцатеричный.
Итак, если вы хотите получить md5 хэш как строку в Java вы можете, как это:
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() и возможное значение formats для получения дополнительной информации.
Нет, код по-разному в обоих вопросах – genesis
Код отличается, вы можете взять на это помощь и реализовать на своем кодексе, никто не предоставит вам точный код. –
Когда я делаю String md5Value = new String (md.digest (bytesOfMessage)) в java; В php эквивалентно echo md5 ($ str, true); Можете ли вы предложить, как я могу преобразовать md5 ($ str, true) в md.digest (bytesOfMessage)? – genesis