![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Нашел несколько вариантов классов Base64 для AS3:
http://www.dynamicflash.com/goodies/base64 и еще другой тут предлагаемый Сначала обрадовался. Потом случился облом - Задача - в swf паковать строку в base64 - отправлять ее как параметр на php скрипт и там ее распаковывать. Проблема: PHP код: результат: AS3 код (используя этот класс http://www.dynamicflash.com/goodies/base64): результат: Судя по всему php-ный результат в два раза короче. Из-за разной длины полученных строк и из-за того что они не равны - пришедшая на php-скрипт строка декодируется с ошибками. Искал в инете - ссылка только на этот класс везде. Остальные либо не работают, либо с кучей ошибок вываливаются. Есть у кого-нибудь прямой адаптированный аналог PHPшных функций для Base64? Заранее спасибо. |
|
|||||
|
стервочка (я мужик)
|
UTF-8
|
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Нахожу код на других языках - хоть и работает, но все равно не совпадает с выводом php
Добавлено через 2 минуты Да, я понял что где-то в этом направлении думать надо, но никак не пойму где нужно что поправить... |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
В лоб:
Не выходит. Видимо надо искать другой способ перекодировки в UTF8 из ansi |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Цитата:
Я перед отправлением на скрипт еще шифрую по ключу с помощью xor 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))); 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));
?>
Функция axor это просто переписанная функция xor из as3-варианта. Видимо что-то опять про кодировки не учел... Я никак в этом разобраться не могу ![]() Добавлено через 6 минут Целью является принять в php строку 0IjQpRTQo9GdQ9CJ0ZLQj15B0bfQhtCE0ZrRtNCB0ZHRsNG/EtCHW0XRktCD0IvQjNCj0Z7Ru9CF0IDRlQ== и из нее получить нормальную строку вот так: Потом обработать данные, сгенерить ответ, зашифровать его и отправить обратно |
|
|||||
|
Регистрация: Jul 2009
Сообщений: 1
|
По поводу кодирования и раскодирования русских символов… Проблему решил посредством изменения порядка кодирования:
http://enginer.googlecode.com/svn/trunk/src/ua/org/enginer/utils/Cryptor.as private static function xor(source:String, key:String=""):String { if (!key) return source; var keyLength:int = key.length; var result:String = ""; for(var i:Number = 0; i < source.length; i++) result += String.fromCharCode(source.charCodeAt(i) ^ key.charCodeAt(i % keyLength)); return result; } public static function encode(source:String, key:String=""):String { return xor(Base64.encode(source), key); } public static function decode(source:String, key:String=""):String { return Base64.decode(xor(source, key)); } http://enginer.googlecode.com/svn/trunk/src/ua/org/enginer/utils/Cryptor.php
__________________
http://code.google.com/p/enginer/ Последний раз редактировалось enginer; 23.07.2009 в 14:11. |
|
|||||
|
Регистрация: May 2008
Сообщений: 102
|
Ну хорошо, хоть упаковываться будет в приличные буковки, проблем с кодировкой не будет
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|