DaFive
12.04.2010, 13:46
Здравствуйте, товарищи.
Возникла проблема следующего плана. Есть функция xor'а:
public function xor(source:String, key:String):String
{
var result:String = new String();
key = key.substr(0, source.length);
for (var i:int = 0; i < source.length; i++)
{
trace(source.charCodeAt(i), key.charCodeAt(i));
result += String.fromCharCode(source.charCodeAt(i) ^ key.charCodeAt(i));
}
return result;
}
Так вот, при первом обращении к функции все проходит успешно:
encode
79 98
75 54
59 53
50 53
48 50
48 48
56 48
59 98
50 55
54 98
50 101
48 53
59 56
57 51
48 98
59 54
49 53
59 56
49 55
59 49
49 98
Но мы видим что на 6 символе у нас получается 2 одинаковых кода: 48 и 48.
При расшифровке сообщения, соответственно на 6 символе мы и валимся. То есть флеш видит его как ?конец строки?:
decode
45 98
125 54
14 53
7 53
2 50
Это возникает далеко не всегда и зависит от некой комбинации ключа (key) и самой строки (source).
Назрел вопрос: как собственно запретить ему видеть конец строки и продолжать расшифровку даже тогда, когда мы получаем 2 одинаковых числа?
Возникла проблема следующего плана. Есть функция xor'а:
public function xor(source:String, key:String):String
{
var result:String = new String();
key = key.substr(0, source.length);
for (var i:int = 0; i < source.length; i++)
{
trace(source.charCodeAt(i), key.charCodeAt(i));
result += String.fromCharCode(source.charCodeAt(i) ^ key.charCodeAt(i));
}
return result;
}
Так вот, при первом обращении к функции все проходит успешно:
encode
79 98
75 54
59 53
50 53
48 50
48 48
56 48
59 98
50 55
54 98
50 101
48 53
59 56
57 51
48 98
59 54
49 53
59 56
49 55
59 49
49 98
Но мы видим что на 6 символе у нас получается 2 одинаковых кода: 48 и 48.
При расшифровке сообщения, соответственно на 6 символе мы и валимся. То есть флеш видит его как ?конец строки?:
decode
45 98
125 54
14 53
7 53
2 50
Это возникает далеко не всегда и зависит от некой комбинации ключа (key) и самой строки (source).
Назрел вопрос: как собственно запретить ему видеть конец строки и продолжать расшифровку даже тогда, когда мы получаем 2 одинаковых числа?