![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| evgenyboom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
Коллеги, в яве не силен, но очень надо перевести не сложную функцию подсчета хэша аля MD5 на язык PHP. Будет время, уделите ...
Сразу оговорюсь, в php есть функция md5(string) - но результат получается отличный от вышеизложенной функции. |
|||
|
||||
| evgenyboom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
или наглядно объясните, что означают:
1. (0xFF & arrayOfByte[j]) - это сложение или присоединение? Т.е. в результате получается сумма? Например 255+5=260 или 255+5=2555? 2. (0 + str2) - это что? '0'+'А'='0А' или 0+'А'=0? неврубаюсь ... числа присоединяются, буквы суммируются))) |
|||
|
||||
| dorogoyIV |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 26.3.2007 Репутация: 3 Всего: 46 |
0xFF = 255
0xFF & 5 = 5 String s = "sss"; s = 0 + s; // result - "0sss" |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
По факту, это получение из знакового байта, его беззнакового значения. Конкатенация.
Скорее всего дело в преобразовании строки в байты. В этом г0внокоде используется paramString.getBytes() который преобразует строку в байты используя умолчальную кодировку системы. Как поступает md5(string) в php я не в курсе, но надо синхронизировать их поведение. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| evgenyboom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
Спасибо, за разъяснение.
Пытаюсь написать ява скрипт и php скрипт, чтобы сравнивать, что на выходе получается, и опять столкнулся с проблемой. Делаю так:
но выходит туча ошибок. Например после первого же String просит точку с запятой. :о( Ява в HTML и ява для программ - разные языки? Это сообщение отредактировал(а) evgenyboom - 7.9.2012, 22:48 |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
А надо именно перевести или можно в инете погуглить на предмет готового решения на PHP ?
|
|||
|
||||
| evgenyboom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
Надо эмулировать именно этот метод подсчета хэша, чтобы подставлять свои данные и сервак принимал их за "свои". Он сравнивает данные и хэш, если расхождение не принимает. Данные хочу подменить, хэш пересчитать.
|
|||
|
||||
| evgenyboom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
LSD, может снова выручишь?
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
1. Вопрос в том, какая кодировка у строки в PHP. 2. На чем это должно быть реализованно? Ты выбрал раздел Java но пример кода у тебя на JavaScript. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| evgenyboom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
LSD,
Это из-за того, что я яву не знаю. Зато теперь знаю, что ява и ява скрипт - разные языки. В общем задача: исходный код на яве, он просчитывает хэш md5 каким-то кривым способом (в первом посте). Я пишу php скрипт, с автоматической авторизацией и прочим и мне надо этот хэш в php посчитать именно тем же способом, что и в этом, как ты выразился гОвнокоде. Для того, чтобы можно было сравнивать PHP MD5 и этот, я хотел этот гОвнокод банально вставить как яваскрипт, теперь понятно что это весело. Значит буду двигаться дальше, запускать на компе ява машину и запускать гОвнокод на ней. Кодировки я привожу к одной - UTF-8, дело не в кодировках. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Я проверил этот код он возвращает корректный MD5 хэш в умолчальной кодировке для JVM.
Теперь о том почему MD5 могут различаться: 1. MD5 можно посчитать только для байтов. Чтобы посчитать его для строки строку надо преобразовать в байты. В Java коде это делается paramString.getBytes(), который конвертирует строку их внутреннего представления Java в байты используя умолчальную кодировку системы (Charset.defaultCharset()). Как получаются эти байты в PHP я не в курсе. 2. Если кодировка UTF-8, то в нее можно кодировать с BOM или без него. Java getBytes() кодирует без BOM. 3. Поведение getBytes() зависит от настроек ОС и JVM и может меняться, а значит и MD5 будет различаться. Если хочешь воспроизвести поведение функции на локальной машине, надо сделать так чтобы Charset.defaultCharset() совпадало с сервером. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Если строка уже известна во время выполнения php скрипта - её можно посчитать в php.
Но часто она известна только к моменту выполнения на машине клиента. Обычно для этого используется JavaScript - поэтому программист php должен знать JavaScript. Вместо JavaScript можно в код страницы вставить апплет - тогда можно использовать код на Java непосредствено. Но у пользователя должно быть разрешено выполнение апплетов в браузере. |
|||
|
||||
| evgenyboom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 6.9.2012 Репутация: нет Всего: нет |
LSD и остальным соболезнующим, большое спасибо! Установил JBuilder и ... в проблеме разобрался.
Можно тему закрыть. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |