PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 22
Robotex Отправлено: 20 Февраля, 2011 - 19:16:45 • Тема: Алгоритм MD2 • Форум: Программирование на PHP

Ответов: 4
Просмотров: 848
Переписал на С, хеш другой, но тоже неправильный.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. #include <iostream>
  3. #include <iomanip>
  4. using namespace std;
  5.  
  6. unsigned char PI_SUBST[] = {
  7.     41,  46,  67, 201, 162, 216, 124,   1,  61,  54,  84, 161, 236, 240,   6,  19,
  8.     98, 167,   5, 243, 192, 199, 115, 140, 152, 147,  43, 217, 188,  76, 130, 202,
  9.     30, 155,  87,  60, 253, 212, 224,  22, 103,  66, 111,  24, 138,  23, 229,  18,
  10.    190,  78, 196, 214, 218, 158, 222,  73, 160, 251, 245, 142, 187,  47, 238, 122,
  11.    169, 104, 121, 145,  21, 178,   7,  63, 148, 194,  16, 137,  11,  34,  95,  33,
  12.    128, 127,  93, 154,  90, 144,  50,  39,  53,  62, 204, 231, 191, 247, 151,   3,
  13.    255,  25,  48, 179,  72, 165, 181, 209, 215,  94, 146,  42, 172,  86, 170, 198,
  14.     79, 184,  56, 210, 150, 164, 125, 182, 118, 252, 107, 226, 156, 116,   4, 241,
  15.     69, 157, 112,  89, 100, 113, 135,  32, 134,  91, 207, 101, 230,  45, 168,   2,
  16.     27,  96,  37, 173, 174, 176, 185, 246,  28,  70,  97, 105,  52,  64, 126,  15,
  17.     85,  71, 163,  35, 221,  81, 175,  58, 195,  92, 249, 206, 186, 197, 234,  38,
  18.     44,  83,  13, 110, 133,  40, 132,   9, 211, 223, 205, 244,  65, 129,  77,  82,
  19.    106, 220,  55, 200, 108, 193, 171, 250,  36, 225, 123,   8,  12, 189, 177,  74,
  20.    120, 136, 149, 139, 227,  99, 232, 109, 233, 203, 213, 254,  59,   0,  29,  57,
  21.    242, 239, 183,  14, 102,  88, 208, 228, 166, 119, 114, 248, 235, 117,  75,  10,
  22.     49,  68,  80, 180, 143, 237,  31,  26, 219, 153, 141,  51, 159,  17, 131,  20
  23. };
  24.  
  25. struct HexCharStruct
  26. {
  27.   unsigned char c;
  28.   HexCharStruct(unsigned char _c) : c(_c) { }
  29. };
  30.  
  31. inline std::ostream& operator<<(std::ostream& o, const HexCharStruct& hs)
  32. {
  33.  return (o << std::hex << (int)hs.c);
  34. }
  35.  
  36. inline HexCharStruct hex(unsigned char _c)
  37. {
  38.   return HexCharStruct(_c);
  39. }
  40.    
  41. void md2()
  42. {
  43.     unsigned char input_array[32];
  44.     int length = 0;
  45.  
  46.     unsigned char pad = 16;
  47.  
  48.     for(unsigned int j = length;j<length+pad;j++)
  49.    {
  50.        input_array[j] = pad;
  51.    }
  52.  
  53.    length += pad;
  54.  
  55.  
  56.    unsigned char C[16];
  57.  
  58.    for(unsigned char i=0;i<16;i++)
  59.        C[i] = 0;
  60.  
  61.    unsigned char L = 0;
  62.  
  63.    for(unsigned int i = 0;i<length/16;i++)
  64.    {
  65.        for(unsigned char j = 0;j<16;j++)
  66.        {
  67.            unsigned char c = input_array[i*16+j];
  68.            C[j] = C[j] ^ PI_SUBST[c ^ L];
  69.            L = C[j];
  70.        }
  71.    }
  72.  
  73.    for(unsigned char i=0;i<16;i++)
  74.        input_array[16+i] = C[i];
  75.  
  76.    length = 32;
  77.  
  78.    unsigned char X[48];
  79.  
  80.    for(unsigned char i=0;i<48;i++)
  81.        X[i] = 0;
  82.  
  83.    for(unsigned int i = 0;i<length/16;i++)
  84.    {
  85.        for(unsigned char j = 0;j<16;j++)
  86.        {
  87.            X[16+j] = input_array[i*16+j];
  88.            X[32+j] = (X[16+j] ^ X[j]);
  89.        }
  90.  
  91.        unsigned char t = 0;
  92.  
  93.        for(unsigned char j = 0;j<18;j++)
  94.        {
  95.            for(unsigned char k = 0;k<48;k++)
  96.            {
  97.                t = (X[k] ^ PI_SUBST[t]);
  98.                X[k] = (X[k] ^ PI_SUBST[t]);
  99.            }
  100.  
  101.            t = (t+j)%256;
  102.        }
  103.    }
  104.  
  105.    for(unsigned char i =0;i<16;i++)
  106.    {
  107.        cout << hex(X[i]);
  108.    }
  109.    
  110.    cout << endl;
  111. }
  112.  
  113. int main()
  114. {
  115.  md2();
  116.  return 0;
  117. }
  118.  
Robotex Отправлено: 18 Февраля, 2011 - 16:21:53 • Тема: Алгоритм MD2 • Форум: Программирование на PHP

Ответов: 4
Просмотров: 848
Как задавать в PHP размер и тип? Вообще, есть в нем тип byte или char?
Robotex Отправлено: 18 Февраля, 2011 - 04:27:56 • Тема: Алгоритм MD2 • Форум: Программирование на PHP

Ответов: 4
Просмотров: 848
Написал свою реализацию алгоритма MD2. Но вот почему-то он генерирует неправильный хеш (не совпадает с эталоном), хотя код уже несколько раз перепроверил. В чем я ошибся?
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.  
  3.         $S = array(
  4.    41,  46,  67, 201, 162, 216, 124,   1,  61,  54,  84, 161, 236, 240,   6,  19,
  5.    98, 167,   5, 243, 192, 199, 115, 140, 152, 147,  43, 217, 188,  76, 130, 202,
  6.    30, 155,  87,  60, 253, 212, 224,  22, 103,  66, 111,  24, 138,  23, 229,  18,
  7.   190,  78, 196, 214, 218, 158, 222,  73, 160, 251, 245, 142, 187,  47, 238, 122,
  8.   169, 104, 121, 145,  21, 178,   7,  63, 148, 194,  16, 137,  11,  34,  95,  33,
  9.   128, 127,  93, 154,  90, 144,  50,  39,  53,  62, 204, 231, 191, 247, 151,   3,
  10.   255,  25,  48, 179,  72, 165, 181, 209, 215,  94, 146,  42, 172,  86, 170, 198,
  11.    79, 184,  56, 210, 150, 164, 125, 182, 118, 252, 107, 226, 156, 116,   4, 241,
  12.    69, 157, 112,  89, 100, 113, 135,  32, 134,  91, 207, 101, 230,  45, 168,   2,
  13.    27,  96,  37, 173, 174, 176, 185, 246,  28,  70,  97, 105,  52,  64, 126,  15,
  14.    85,  71, 163,  35, 221,  81, 175,  58, 195,  92, 249, 206, 186, 197, 234,  38,
  15.    44,  83,  13, 110, 133,  40, 132,   9, 211, 223, 205, 244,  65, 129,  77,  82,
  16.   106, 220,  55, 200, 108, 193, 171, 250,  36, 225, 123,   8,  12, 189, 177,  74,
  17.   120, 136, 149, 139, 227,  99, 232, 109, 233, 203, 213, 254,  59,   0,  29,  57,
  18.   242, 239, 183,  14, 102,  88, 208, 228, 166, 119, 114, 248, 235, 117,  75,  10,
  19.    49,  68,  80, 180, 143, 237,  31,  26, 219, 153, 141,  51, 159,  17, 131,  20);
  20.    
  21.         $input_string = "";
  22.         echo "Input string: ".$input_string."<br />";
  23.  
  24.         $input_array = array();
  25.  
  26.         for($i=0;$i<strlen($input_string);$i++)
  27.         {
  28.           $input_array[$i] = $input_string[$i];
  29.         }
  30.        
  31.         $length = count($input_array);
  32.         echo "String length: ".$length."<br />";
  33.        
  34.         $pad = 16 - $length%16;
  35.         echo "Padding by ".$pad." symbols<br />";
  36.        
  37.         for($i=$length;$i<$length+$pad;$i++)
  38.         {
  39.           $input_array[$i] = $pad;
  40.         }
  41.        
  42.         $length += $pad;
  43.        
  44.         echo "Now input_array are:<br /><pre>";
  45.  var_dump($input_array);
  46.  echo "</pre>";
  47.  echo "New length: ".$length."<br />";
  48.        
  49.         $C = array();
  50.        
  51.         for($i=0;$i<16;$i++)
  52.         {
  53.           $C[$i] = 0;
  54.         }
  55.          
  56.         $L = 0;
  57.        
  58.         for($i = 0;$i<$length/16;$i++)
  59.  {
  60.    for($j = 0;$j<16;$j++)
  61.    {
  62.      $c = $input_array[$i*16+$j];
  63.      $C[$j] = $C[$j] ^ $S[$c ^ $L];
  64.      $L = $C[$j];
  65.    }
  66.  }
  67.  
  68.  echo "Array C:<br /><pre>";
  69.  var_dump($C);
  70.  echo "</pre>";
  71.  
  72.  for($i=0;$i<count($C);$i++)
  73.         {
  74.           $input_array[$length+$i] = $C[$i];
  75.         }
  76.        
  77.         $length += count($C);
  78.  
  79.  echo "Now input_array are:<br /><pre>";
  80.  var_dump($input_array);
  81.  echo "</pre>";
  82.  echo "New length: ".$length."<br />";
  83.  
  84.  $X = array();
  85.  
  86.  for($i=0;$i<48;$i++)
  87.  {
  88.    $X[$i] = 0;
  89.  }
  90.  
  91.  for($i = 0;$i<$length/16;$i++)
  92.  {
  93.    for($j = 0;$j<16;$j++)
  94.    {
  95.      $X[16+j] = $input_array[$i*16+$j];
  96.      $X[32+j] = ($X[16+j] ^ $X[j]);
  97.    }
  98.  
  99.    $t = 0;
  100.  
  101.    for($j = 0;$j<18;$j++)
  102.    {
  103.      for($k = 0;$k<48;$k++)
  104.      {
  105.        $t = ($X[$k] ^ $S[$t]);
  106.        $X[$k] = ($X[$k] ^ $S[$t]);
  107.      }
  108.  
  109.      $t = ($t+$j)%256;
  110.    }
  111.  }
  112.    
  113.  echo "Array X:<br /><pre>";
  114.  var_dump($X);
  115.  echo "</pre>";
  116.  
  117.  $result = "";
  118.  
  119.  for($i=0;$i<16;$i++)
  120.  {
  121.    $result .= dechex($X[$i]);
  122.  }
  123.  
  124.  echo "MD2 Hash: ".$result."<br />";
  125.  echo "Etalon: ".hash("md2", $input_string)."<br />";
  126.        
  127. ?>
Robotex Отправлено: 04 Сентября, 2010 - 21:28:48 • Тема: Функция exec и возвращаемый ей результат • Форум: Программирование на PHP

Ответов: 3
Просмотров: 744
Да, но на экран выведется, только когда скрипт полностью отработает. По крайней мере в Опере так.
Robotex Отправлено: 04 Сентября, 2010 - 16:30:46 • Тема: Функция exec и возвращаемый ей результат • Форум: Программирование на PHP

Ответов: 3
Просмотров: 744
Думаю все знают про функцию exec, которая запускает программу на сервере и выдает результат в виде массива строк. Но что делать, если программа работает долго и постоянно выдает данные в консоль? Хотелось бы выдавать эту информацию в браузер по мере ее появления, да и время выполнения может быть длительным, не хотелось бы, чтобы PHP-скрипт остановился из-за превышения допустимого времени. Есть идеи, как решить эту проблему?
(Добавление)
Обнаружил функцию system, которая выводит результат по мере вывода, но браузер не отобразит вывод, пока функция полностью не отработает. Вероятно, придется использовать AJAX. Он позволит сделать задуманное?
Robotex Отправлено: 02 Сентября, 2010 - 21:52:44 • Тема: WYSIWYG редактор кода • Форум: Программирование на PHP

Ответов: 1
Просмотров: 186
Возникла необходимость написать онлайновый редактор кода C++. Да еще и WYSIWYG. Проблема в том, что я даже не представляю как это делается. Насколько я понимаю стоит использовать связку PHP + AJAX. Что насчет этого можно почитать?
Robotex Отправлено: 30 Августа, 2010 - 12:40:07 • Тема: Определить откуда пришел POST • Форум: Программирование на PHP

Ответов: 3
Просмотров: 354
Попробовал: $_SERVER['HTTP_REFERER'] не определен
Robotex Отправлено: 30 Августа, 2010 - 12:15:19 • Тема: Определить откуда пришел POST • Форум: Программирование на PHP

Ответов: 3
Просмотров: 354
Есть скрипт. Он получает по POST параметры и выводит на страницу JSON. Таким образом реализуется API моего сайта.

Возникает вопрос: а как узнать, кто обращается к API? Откуда пришел POST?
Robotex Отправлено: 02 Июня, 2010 - 20:03:38 • Тема: Попиксельный вывод картинки на экран • Форум: Программирование на PHP

Ответов: 4
Просмотров: 504
qbik пишет:
imagecreatetruecolor или imagecreate?

imagecreate
(Добавление)
Поставил вторую функцию - заработало. Спасибо Улыбка А в чем у них принципиальная разница? Увы, с графикой работаю редко, потому не знаю всех нюансов...
Robotex Отправлено: 02 Июня, 2010 - 19:31:03 • Тема: Попиксельный вывод картинки на экран • Форум: Программирование на PHP

Ответов: 4
Просмотров: 504
Пишу курсач на PHP (так быстрее, да и привык уже Улыбка ). Побайтово считываю структуры рисунка, добываю из них данные пикселов и заношу в массив интенсивности каналов R, G и B.
Теперь нужно вывести эти пикселы на экран. В цикле вызываю imagecolorallocate и с помощью setpixel вывожу на экран. Выводится первая строка, половина второй и все... В чем проблема? Как решить?
Robotex Отправлено: 18 Декабря, 2009 - 18:23:15 • Тема: Своя библиотека для PHP • Форум: Apache и другие веб-серверы

Ответов: 3
Просмотров: 378
EuGen пишет:
Тема, по-моему, уже поднималась тут:
http://forum.php.su/topic.php?fo...m=29&topic=9

тут вообще про алгоритмі шифровки
Robotex Отправлено: 18 Декабря, 2009 - 14:03:12 • Тема: Своя библиотека для PHP • Форум: Apache и другие веб-серверы

Ответов: 3
Просмотров: 378
Нужно написать библиотеку на C++, которая будет подключаться к PHP (расширение с собственными функциями). Где почитать про это?
Robotex Отправлено: 30 Октября, 2009 - 17:06:34 • Тема: Отформатировать XML • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 74
valenok пишет:
Попробуй загрузить документ припомощи DOMDocument а потом сохранить его в файл
установив dom->formatOutput в true

CODE (text):
скопировать код в буфер обмена
  1. $doc = new DOMDocument('1.0', 'utf-8');
  2. $doc->loadXML(file_get_contents('d:/job/table.html'));
  3. $doc->formatOutput=true;
  4. file_put_contents('d:/job/table_norm.htm', $doc->saveXML());

ничего не изменяется (добавляется только <?xml version="1.0"?> )
Robotex Отправлено: 30 Октября, 2009 - 16:17:46 • Тема: Отформатировать XML • Форум: Напишите за меня, пожалуйста

Ответов: 2
Просмотров: 74
Нужно форматнуть XML-документ - поубирать все символы табуляции, лишние незначимые пробелы, переносты строк - словом, все, что обычно удаляет браузер нужно удалить.
То что приходит в голову - это использовать кучу preg_replace и str_replace. В общем выходит все очень громоздко.
Есть какой-нибудь способ сделать это изящно, например, с помощью simpleXML?
Robotex Отправлено: 07 Июня, 2009 - 23:01:30 • Тема: Поубирать лишние пробелы • Форум: Программирование на PHP

Ответов: 9
Просмотров: 676
ALEN пишет:
На мое мнение если парсер с XML - то лучше чем SimpleXML ничего не найти. Самый короткий и быстрый вариант.


Я ж не спорю ))) Просто когда я писал парсер, то пользовался втроенным парсером ПХП. Но если вы расскажете, как преобразовать то, что вернет SimpleXML в массив вида:

CODE (text):
скопировать код в буфер обмена
  1.  
  2. array(text => 'Bla bla bla',
  3. tags => array(
  4. 0 => array(
  5. tag => 'p',
  6. fcFirst => 0,
  7. fcLast => 11
  8. ),
  9. 1 => array(
  10. tag => 'b'
  11. fcFirst => 0,
  12. fcLast => 3
  13. )
  14. )
  15. );
  16.  

(где fcFirst первый символ в тексте, с которого начинается данный тег, fcLast - последний символ+1)
то я не пожалею времени и перепишу Улыбка

Просто я не очень умею обрабатывать объекты в циклах...
(Добавление)
Попробовал только что SimpleXML - пробелы остались на месте

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB