Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Про глюки XOR алгоритма [D7, WinXP]


Страницы:   1 2 3

ares18 ©   (2007-08-27 18:54:00) 

Привет корифеям Delphi!
Кто нить сталкивался с таким косяком шифрования:
при использовании шифрования, в частности xor алгоритма
типа

procedure TForm1.code ;

var
 key, text, longkey, result: string;
 i: integer;
 toto, c: char;
begin
 key:=edit1.Text;
 longkey:=edit2.Text;
 text:=w;

 for i := 0 to (length(text) div length(key)) do
   longkey := longkey + key;
 for i := 1 to length(text) do
 begin
   toto := chr((ord(text[i]) xor ord(longkey[i]))); // XOR àëãîðèòì
   result := result + toto;
   q:= result;
 end;

 text:='';
end;

сперва шифруется и дешифруестся нормально (как строки так и мемо-поля),однако в какой то момент при шифровке или дешифровке теряется часть строки ( как в строках, так и в мемо). Возникает глюк случайно и вроде от пароля не зависит.


Anatoly Podgoretsky   (2007-08-27 21:53:00) [41]

Ты что работаешь с результатом как с текстом, это зря. Работай как с двоичными данными.


ares18   (2007-08-27 21:48:00) [42]

Но тогда, какой же брать ключ?
Из тех символов к-е никогда в тексте не встретятся?
Не встретятся ни в обычном виде, ни в зашифрованном?


ares18   (2007-08-27 21:41:00) [43]


> Не случайно. А потому, что в теле строки появляется символ
> #0, на котором она потом обрезается. Так и должно быть.


Да вроде как с #0 все тип-топ.


> Reindeer Moss Eater ©   (27.08.07 19:01) [2]
> в какой то момент при шифровке или дешифровке теряется часть
> строки
>
> Дай угадаю. Это происходит тогда, когда шифруемый символ
> и символ ключа совпали?
> :)
> <Цитата>


Кажись так оно есть:

скажем если для данного кода:

key:='abbkinfkljf';

longkey:="gvghwv';

text:=' qweqw';

то в рез-те операции кодирования и раскодирования

получим:   qweq

w потерялась, вроде-как, из-за присутствия в longkey.
(т.е. решается заменой w на другой символ в longkey или в тексте)

Но тогда, какой же брать ключ?
Из тех символов к-е никогда в тексте не встретятся?


Юрий Зотов   (2007-08-27 19:07:00) [44]

> ares18 ©   (27.08.07 18:54)

> Возникает глюк случайно

Не случайно. А потому, что в теле строки появляется символ #0, на котором она потом обрезается. Так и должно быть.


Anatoly Podgoretsky   (2007-08-27 19:03:00) [45]

> ares18  (27.08.2007 18:54:00)  [0]

У XOR глюков нет!


Reindeer Moss Eater   (2007-08-27 19:01:00) [46]

в какой то момент при шифровке или дешифровке теряется часть строки

Дай угадаю. Это происходит тогда, когда шифруемый символ и символ ключа совпали?
:)


Reindeer Moss Eater   (2007-08-27 18:55:00) [47]

Ну и при чем здесь сам ксор?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо