Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с шифровкой данных

 PHP.SU

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


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

> Без описания
Dark_Knight
Отправлено: 20 Мая, 2014 - 12:56:41
Post Id


Новичок


Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2013  


Помог: 0 раз(а)




Когда я передаю данные в шифрованном виде к серверному обработчику с ключом "info", то он все спокойное расшифровывает и скрипт работает как нужно. Когда другой человек передает с таким же ключом, то данные расшифровываются не правильно и из-за этого запись в БД происходнит с пустыми данными. Если я ставлю другой ключ, то мои данные расшифровываются не правильно, а другого человека нормально. Думал, что проблема в кодировках между клиентом и сервером. Использование iconv, смена в htaccess кодировки тоже не помогла. Если зашифровать инфу на клиенте или сервере и тут же её расшифровать то все работает нормально. Может у кого-то есть мысли по этому поводу как это исправить?
Функция шифрования/расшифрования на сервере
PHP:
скопировать код в буфер обмена
  1. function stroke_xor( $string, $key )
  2. {
  3.  $outText = '';
  4.  for( $j = 0, $i = 0; $i < strlen( $string ); $j++, $i++ )
  5.  {
  6.   if ( $j >= strlen( $key ) ) $j = 0;
  7.  
  8.   $outText .= $string{$i} ^ $key{$j};
  9.  }
  10.  return $outText;
  11. }

В клиенте.
CODE (htmlphp):
скопировать код в буфер обмена
  1. :stroke_xor
  2. var
  3.     1@: int
  4.     2@: int
  5.     3@: int
  6.     4@: int
  7.     6@: int
  8.     9@: int
  9.     11@: int
  10.     12@: int
  11. 0C17: 2@ = strlen 0@ //string
  12. 0C17: 3@ = strlen 1@ //key
  13. 12@ = 2@
  14. inc( 12@ )
  15. 0AC8: 4@ 12@//Выделение памяти для 4@ в 12@ бай
  16. 0c11: memset 4@ 0 12@
  17. 11@ = 4@ // reserve buff
  18. 6@ = 1@ // reserve ptr
  19. 9@ = 0
  20. for 5@ = 0 to 2@
  21.     if 9@ >= 3@
  22.     then
  23.         9@ = 0
  24.         1@ = 6@
  25.     end    
  26.     0A8D: 7@ = read_memory 0@ size 1 virtual_protect 0
  27.     0A8D: 8@ = read_memory 1@ size 1 virtual_protect 0
  28.     0B12: 10@ = 7@ XOR 8@
  29.     0A8C: write_memory 4@ size 1 value 10@ virtual_protect 0
  30.     inc( 0@ )
  31.     inc( 1@ )
  32.     inc( 4@ )    
  33.     inc( 9@ )
  34. /* Опкод 0A8C записывает значение по указанному адресу памяти игры.
  35.  
  36.  
  37. Параметры:
  38. 1 – адрес памяти (любое целое число)
  39. 2 – размер записи: 1, 2, 4 байта
  40. 3 – значение (любое число)
  41. 4 – Virtual Protect: 1 – если нужно сделать адрес памяти записываемым, 0 – если запись идет в перезаписываемый адрес памяти.
  42.  
  43. */
  44. ret 1 11@
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB