![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про глюки XOR алгоритма [D7, WinXP]
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]Ну и при чем здесь сам ксор?