Всем доброго времени суток
Хочу закодировать текст (String) XOR-методом и записать его в файл. Т.е. весь текст раскладываю на строки, кодирую построчно, собираю, добавляя в конец каждой строки "\r\n" последовательность. При декодировании опять разбиваю на строки, убираю "\r\n" и пробую декодировать с тем же ключом - НЕ ПОЛУЧАЕТСЯ!!!
Создал такой вот класс:

Код AS3:
package src
{
public class XORcoder
{
// Constants:
static const def_key:String='RQ9UEgyaXINTyzpn3SJ7FSzmwSlewTWI3';
// Initialization:
public function XORcoder()
{
}
// Public Methods:
static public function encode(input_str:String,key:String=def_key):String
{
var output_str:String = new String();
output_str = xor(input_str,key);
return output_str;
}
static public function decode(input_str:String,key:String=def_key):String
{
var output_str:String = new String();
output_str = xor(input_str,key);
return output_str;
}
// Protected Methods:
static private function xor(source:String,key:String):String
{
var result:String = new String();
for (var i:uint = 0; i<source.length; i++) {
if (i > (key.length-1)) {
key+=key;
}
result+=String.fromCharCode(source.charCodeAt(i)^key.charCodeAt(i));
}
return result;
}
}
}
В одну строну кодируется нормально (кажется), а обратно не хочет декодироваться. Мне кажется загвоздка где-то в этом месте String.fromCharCode, когда as пытается вернуть UTF8-символ по полученному коду (source.charCodeAt(i)^key.charCodeAt(i))
Кто подскажет?
-----------------------------------------------------
Вот отдельная программка на этом классе. Если подольше потыкать, то можно обнаружить, что не всегда закодированный (encoded) текст возвращается в декодированный (decoded) при нажатии не кнопку "DECODE":