Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Надо перевести функцию из Java в PHP / 9 сообщений из 9, страница 1 из 1
14.09.2012, 00:53:18
    #37956915
EvgenyBoom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
Коллеги, в Яве не силен, переведите пожалуйста функцию с Явы на ПХП.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
  public static final String a(String paramString)
  {
    byte[] arrayOfByte = MessageDigest.getInstance("MD5").digest(paramString.getBytes());
    int i = arrayOfByte.length;
    int j = 0;
    String str1 = "";
    while (true)
    {
      if (j >= i)
        return str1;
      String str2 = Integer.toHexString(0xFF & arrayOfByte[j]);
      if (str2.length() == 1)
        str2 = 0 + str2;
      str1 = str1 + str2;
      j++;
    }
  }


Эта функция подсчитывает кривым способом MD5 хэш. Мне надо точно так же считать его на PHP.
...
Рейтинг: 0 / 0
14.09.2012, 02:49:48
    #37956943
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
EvgenyBoom,

Код: php
1.
2.
3.
function a($paramString) {
	return md5($paramString);
}
...
Рейтинг: 0 / 0
14.09.2012, 17:36:13
    #37958268
EvgenyBoom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
Usman,
))) если бы это было так просто, я б не писал сюда ))))
Получаются различные хэши.
Подозреваю, что в коде явы хэш высчитывается не от самой строки а от "paramString.getBytes()", к тому же не совсем понятные мне сложения символов (str2 = 0 + str2) и присоединение или логическое И (0xFF & arrayOfByte[j]).
Никак не могу добиться одинаковых хэшей.
Свой код PHP сознательно не выкладываю, нужны свежие мысли.
...
Рейтинг: 0 / 0
14.09.2012, 17:41:00
    #37958276
EvgenyBoom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
Usman,

если ява машина у тебя есть, запусти плиз эту функцию и скажи какой хэш будет от строки "12345". (просто набор цифр) дабы упростить себе задачу с умолчальной кодировкой страницы.
И еще вопрос, в яве у тектовых переменных в конце строки есть \n символ?
...
Рейтинг: 0 / 0
14.09.2012, 18:27:19
    #37958334
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
EvgenyBoom,

Java:
Код: java
1.
a("12345")   => 827ccb0eea8a706c4c34a16891f84e7b

PHP:
Код: php
1.
md5("12345") => 827ccb0eea8a706c4c34a16891f84e7b

Даже на Питоне проверил :)
Код: python
1.
2.
3.
>>> import hashlib
>>> hashlib.md5('12345').hexdigest()
'827ccb0eea8a706c4c34a16891f84e7b'
...
Рейтинг: 0 / 0
14.09.2012, 18:29:18
    #37958336
grasoff.net
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
EvgenyBoomв яве у тектовых переменных в конце строки есть \n символпока сам не добавишь - не будет )
...
Рейтинг: 0 / 0
14.09.2012, 18:29:43
    #37958338
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
EvgenyBoomИ еще вопрос, в яве у тектовых переменных в конце строки есть \n символ?Если имеются опасения на счет \n , можно воспользоваться функцией trim() :
Код: java
1.
System.out.println(a("12345\n".trim()));
...
Рейтинг: 0 / 0
14.09.2012, 18:51:03
    #37958367
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
EvgenyBoom( 0xFF & arrayOfByte[j]) Это означает отсечь все, кроме младшего байта

Переработанный вариант:
Код: java
1.
2.
3.
4.
5.
6.
7.
public static final String md5(String paramString) throws NoSuchAlgorithmException {
    StringBuilder sb = new StringBuilder();
    for (byte b: MessageDigest.getInstance("MD5").digest(paramString.getBytes()))
        sb.append(String.format("%02x", b));

    return sb.toString();
}
...
Рейтинг: 0 / 0
15.09.2012, 18:11:53
    #37958891
EvgenyBoom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надо перевести функцию из Java в PHP
Usman,

Благодарствую! Поставил себе JBuilder, проверил, действительно одинаковые. Значит все-таки проблема в разных кодировках.
Всем спасибо, буду разбираться дальше.
Тему можно закрыть.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Надо перевести функцию из Java в PHP / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]