Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Более-менее закрытая передача информации с сервера на клиент (http://www.flasher.ru/forum/showthread.php?t=148240)

mikhailk 25.12.2010 11:27

Более-менее закрытая передача информации с сервера на клиент
 
Реализуется обычная игрушка с баттлом, когда параметры этого баттла заранее просчитаны сервером. Соответственно, клиент запрашивает у сервера протокол баттла, сервер в ответ предает на клиент протокол, клиент его визуализирует.

Встал вопрос, как попроще закрыть ответ сервера. С хакерами не боремся, просто хотелось бы, чтобы ответ сервера не был визуально понятен, если пользователь отправил запрос на сервер через браузер.

Сервер на PHP, не хотелось бы его грузить какими-нибудь сложными кодирующими алгоритмами.

Добавлено через 14 минут
Была в общем-то очевидная мысль отдавать со стороны сервера не текст, а кусок контента в виде файла jpg/swf, который в браузере будет выглядеть полной абракадаброй. Но не хотелось бы совсем уж велосипед изобретать.

terbooter 25.12.2010 14:06

Я использую XOR алгоритм. Простой и быстрый.
Ключ есть у флешки и на сервере.
Хакера не остановит, но школьников с чарли обломает =)

mikhailk 25.12.2010 16:54

самописный или из какой-нибудь библиотеки?

terbooter 25.12.2010 20:48

самописный. там 5 строчек =)

goodguy 25.12.2010 21:19

А можно по-подробнее? Мне тоже интересно :D

udaaff 25.12.2010 21:39

Погугли xor шифрование.

terbooter 25.12.2010 21:40

Код AS3:

                /**
                *
                * Шифрует byteArray по алгоритму XOR
                * используя ключ key
                *
                * Применяется в библиотеке main-server
                *
                * @param        binaryData
                * @param        key
                */

                public static function XOR(binaryData:ByteArray, key:String):void{
                        var keyIndex:Number=0;
                        for (var i:Number = 0; i < binaryData.length; i++) {
                                binaryData[i] = binaryData[i] ^ key.charCodeAt(keyIndex);
                                keyIndex++;
                                if (keyIndex >= key.length) {
                                        keyIndex=0;
                                }
                        }
                }

Аналогично на ПХП

mikhailk 26.12.2010 15:58

а с мультибайтовыми символами на php проблем не было?
на тот случай, если кодируемый текст содержит русские символы в utf-8

Добавлено через 24 часа 13 минут
Вопрос.
Что я делаю не так?
Английские символы и цифры - без проблем туда-обратно, русские - только в одну сторону.

Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.utils.ByteArray;
 
        public class Main extends Sprite
        {
 
                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        // entry point
 
                        var str:String ="123456789 include english and в том числе и русские символы";
                        var key:String ="qwerty";
 
                        var strCoded:String = codeXOR(str, key);
                        var strDecoded:String = codeXOR(strCoded, key);
                        trace("String: ",str);
                        trace("Coded string: ",strCoded);
                        trace("Decoded string: ",strDecoded);
 
                }
 
 
                private function XOR(binaryData:ByteArray, key:String):void
                {
                        var keyIndex:Number=0;
                        for (var i:Number = 0; i < binaryData.length; i++) {
                                binaryData[i] = binaryData[i] ^ key.charCodeAt(keyIndex);
                                keyIndex++;
                                if (keyIndex >= key.length) {
                                        keyIndex=0;
                                }
                        }
                }
 
                private function codeXOR(string:String, key:String):String
                {
                        var byteArray:ByteArray = new ByteArray();
                        byteArray.writeUTFBytes(string);
                        XOR(byteArray, key);
                        var resultString:String = byteArray.toString();
                        return(resultString);
                }               
 
        }
 
}

Выдает:

Код:

String:  123456789 include english and в том числе и русские символы

Coded string:  @EVFAOFO\RY
WY¡ÅE£ö©ϧÙR¥þ¡ϴó¤¡ÂE¢ÌY*÷´ñ¥ø*öµȤÁ¡ÂE£õ©ɧ٢Ʃϧޣÿ

Decoded string:  123456789 include english and ³֦÷1»ҴӰݶִü ¶ܲɧӻͲħֶزõ °ֺý.§ҷγæöܲϧҷϳ*ַø³֦ð1»Ҵаݰ֮Ǵݶ֩ƱË



Добавлено через 26 часов 4 минуты
ок, разобрался
надо еще в base64 кодировать


Часовой пояс GMT +4, время: 15:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.