Когда я передаю данные в шифрованном виде к серверному обработчику с ключом "info", то он все спокойное расшифровывает и скрипт работает как нужно. Когда другой человек передает с таким же ключом, то данные расшифровываются не правильно и из-за этого запись в БД происходнит с пустыми данными. Если я ставлю другой ключ, то мои данные расшифровываются не правильно, а другого человека нормально. Думал, что проблема в кодировках между клиентом и сервером. Использование iconv, смена в htaccess кодировки тоже не помогла. Если зашифровать инфу на клиенте или сервере и тут же её расшифровать то все работает нормально. Может у кого-то есть мысли по этому поводу как это исправить?
Функция шифрования/расшифрования на сервере
PHP:
скопировать код в буфер обмена
function stroke_xor( $string, $key ) { $outText = ''; for( $j = 0 , $i = 0; $i < strlen( $string ); $j++, $i++ ) { if ( $j >= strlen( $key ) ) $j = 0; $outText .= $string{$i} ^ $key{$j}; } return $outText; }
В клиенте.
CODE ( htmlphp):
скопировать код в буфер обмена
:stroke_xor var 1@: int 2@: int 3@: int 4@: int 6@: int 9@: int 11@: int 12@: int 12@ = 2@ inc( 12@ ) 0AC8: 4@ 12@//Выделение памяти для 4@ в 12@ бай 0c11: memset 4@ 0 12@ 11@ = 4@ // reserve buff 6@ = 1@ // reserve ptr 9@ = 0 for 5@ = 0 to 2@ if 9@ >= 3@ then 9@ = 0 1@ = 6@ 0A8D: 7@ = read_memory 0@ size 1 virtual_protect 0 0A8D: 8@ = read_memory 1@ size 1 virtual_protect 0 0B12: 10@ = 7@ XOR 8@ 0A8C: write_memory 4@ size 1 value 10@ virtual_protect 0 inc( 0@ ) inc( 1@ ) inc( 4@ ) inc( 9@ ) /* Опкод 0A8C записывает значение по указанному адресу памяти игры. Параметры: 1 – адрес памяти (любое целое число) 2 – размер записи: 1, 2, 4 байта 3 – значение (любое число) 4 – Virtual Protect: 1 – если нужно сделать адрес памяти записываемым, 0 – если запись идет в перезаписываемый адрес памяти. */ ret 1 11@
|