Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.05.2009, 17:00
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 1  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
По умолчанию Base64 (PHP & AS3)

Нашел несколько вариантов классов Base64 для AS3:
http://www.dynamicflash.com/goodies/base64 и еще другой тут предлагаемый

Сначала обрадовался.
Потом случился облом -

Задача - в swf паковать строку в base64 - отправлять ее как параметр на php скрипт и там ее распаковывать.

Проблема:
PHP код:
Код:
base64_encode("ну чо как? работаешь а? алгоритмег")
результат:
Код:
7fMg9+4g6uDqPyDw4OHu8uDl+Pwg4D8g4Ovj7vDo8uzl4w==
AS3 код (используя этот класс http://www.dynamicflash.com/goodies/base64):
Код AS3:
Base64.encode("ну чо как? работаешь а? алгоритмег")
результат:
Код:
0L3RgyDRh9C+INC60LDQuj8g0YDQsNCx0L7RgtCw0LXRiNGMINCwPyDQsNC70LPQvtGA0LjRgtC80LXQsw==
Судя по всему php-ный результат в два раза короче.
Из-за разной длины полученных строк и из-за того что они не равны - пришедшая на php-скрипт строка декодируется с ошибками.

Искал в инете - ссылка только на этот класс везде. Остальные либо не работают, либо с кучей ошибок вываливаются.

Есть у кого-нибудь прямой адаптированный аналог PHPшных функций для Base64?
Заранее спасибо.

Старый 05.05.2009, 17:15
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 2  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
UTF-8

Старый 05.05.2009, 17:15
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 3  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
Нахожу код на других языках - хоть и работает, но все равно не совпадает с выводом php

Добавлено через 2 минуты
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
UTF-8
Да, я понял что где-то в этом направлении думать надо, но никак не пойму где нужно что поправить...

Старый 05.05.2009, 17:18
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Кодировки разные. Flash кодирует utf-8 строку, а php ansii
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.05.2009, 17:24
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 5  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
Цитата:
Сообщение от iNils Посмотреть сообщение
Кодировки разные. Flash кодирует utf-8 строку, а php ansii
В лоб:
Код:
base64_encode(utf8_encode("ну чо как? работаешь а? алгоритмег"))
Не выходит. Видимо надо искать другой способ перекодировки в UTF8 из ansi

Старый 05.05.2009, 17:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
В лоб делают по другому. Сохраняют php файл в кодировке utf-8.
А по "научному" так
Код:
<?
echo base64_encode(iconv ("windows-1251", "utf-8", "ну чо как? работаешь а? алгоритмег"));
?>
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.05.2009, 18:19
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 7  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
Цитата:
Сообщение от iNils Посмотреть сообщение
В лоб делают по другому. Сохраняют php файл в кодировке utf-8.
А по "научному" так
Код:
<?
echo base64_encode(iconv ("windows-1251", "utf-8", "ну чо как? работаешь а? алгоритмег"));
?>
СПАСИБО, заработало. Но все же на этом все не закончилось.

Я перед отправлением на скрипт еще шифрую по ключу с помощью xor

Код AS3:
var KEY:String = MD5.encrypt("password");
 
        function xor(source:String, key:String):String {
            var result:String = new String();
            for(var i:Number = 0; i < source.length; i++) {
                if(i > (key.length - 1)) {
                    key += key;
                }
                result += String.fromCharCode(source.charCodeAt(i) ^ key.charCodeAt(i));
            }
            return result;
        }
 
trace(Base64.encode(xor("ну чо как? работаешь а? алгоритмег", KEY)));
Результат:
Код:
0IjQpRTQo9GdQ9CJ0ZLQj15B0bfQhtCE0ZrRtNCB0ZHRsNG/EtCHW0XRktCD0IvQjNCj0Z7Ru9CF0IDRlQ==
PHP:
Код:
<?
$key = md5("password");
$str = iconv("windows-1251", "utf-8", "ну чо как? работаешь а? алгоритмег");

        function axor($source, $key) {
            $result = "";
            for($i = 0; $i < strlen($source); $i++) {
                if($i > (strlen($key) - 1)) {
                    $key .= $key;
                }
                $result .= chr(ord($source[$i]) ^ ord($key[$i]));
            }
            return $result;
        }

echo base64_encode(axor($str, $key));
?>
Результат:
Код:
5dvl50OytLKLQbGN5oW0jA5E6bPih7TUsobpsLPW6Yzk7uXoQ7ODXRWx0eeN5dfmj7W444rm5rXe6I3i0A==
Функция axor это просто переписанная функция xor из as3-варианта.
Видимо что-то опять про кодировки не учел... Я никак в этом разобраться не могу

Добавлено через 6 минут
Целью является принять в php строку

0IjQpRTQo9GdQ9CJ0ZLQj15B0bfQhtCE0ZrRtNCB0ZHRsNG/EtCHW0XRktCD0IvQjNCj0Z7Ru9CF0IDRlQ==

и из нее получить нормальную строку вот так:

Код:
$source = "0IjQpRTQo9GdQ9CJ0ZLQj15B0bfQhtCE0ZrRtNCB0ZHRsNG/EtCHW0XRktCD0IvQjNCj0Z7Ru9CF0IDRlQ==";
echo axor(base64_decode($source), $key);
Потом обработать данные, сгенерить ответ, зашифровать его и отправить обратно

Старый 05.05.2009, 18:36
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Не шифруйте. Это бесполезно. Можно легко декомпилить ваш swf и все узнать.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.05.2009, 19:11
ekeeper вне форума Посмотреть профиль Отправить личное сообщение для ekeeper Найти все сообщения от ekeeper
  № 9  
Ответить с цитированием
ekeeper

Регистрация: May 2008
Сообщений: 102
Ну хорошо, хоть упаковываться будет в приличные буковки, проблем с кодировкой не будет

Старый 05.05.2009, 19:15
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 10  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
не знаю чего Вы пытаетесь добиться, но явно не "упаковки". так как я пока что вижу увеличение размера относительно исходных данных.

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:19.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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