Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция "CodeDecode".. Не могу разобраться.. Помогите разобраться в фун. "CodeDecode" 
:(
    Опции темы
TwisT_X
  Дата 16.2.2005, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



В програмировании я новичек, занимаюсь им около 2 месяцев(сделал подарок на новый год)..
Купил книжку "Язык Pascal и основы програмирования в Delphi" (автор А.Я Архангельский) и пользуюсь седьмой версией Delphi.. Пока я прошел две главы и у меня воникли пару вопросов..
Один из них это функция "CodeDecode" , состовляющая шифровку и дешифровку строки текста..
Выглядить она так:

function CodeDecode(S: string; Key: word): string;
var i, L: word;
begin
L := Lenght(S);
for i := 1 to L do
S[i] := Chr(Ord(S[i]) xor Key);
Result := S;
end;
Edit1.Text := CodeDecode(Edit1.Text, 10);


Я не понимаю принцип работы.. Приведенный код обеспечивает простейший вариант шифрования с ключом в виде одного целого числа.. Но как я не понимаю.. ПОМОГИТЕ, плиз..
Мой имеил: axel2inbox.ru
Жду помощи...

Это сообщение отредактировал(а) TwisT_X - 16.2.2005, 22:37


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
maxim1000
Дата 17.2.2005, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



ну есть такой метод шифрования
отправителю и получателю известно 8-битное число (ключ)
отправитель при отправке каждого символа делает xor с ключом, получается другой символ, его и отправляют, получатель после приема опять делает xor с ключом, получает исходных символ
тот, кто не знает ключа, не знает, с чем делать xor, а значит, не может получить исходный символ и прочитать сообщение


--------------------
qqq
PM WWW   Вверх
TwisT_X
Дата 18.2.2005, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Но как подобрать сам ключ..
И как (используя этот код) написать программу, которая перебирала все возможные значения ключа (а их всего 255).. smile


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
maxim1000
Дата 21.2.2005, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



вообще-то хорошим алгоритмом шифрования считается тот, в котором подобрать ключ можно только перебором
а перебором: просто делаешь цикл от 0 до 255, расшифровываешь, показываешь пользователю, спрашиваешь "похоже на правду?"


--------------------
qqq
PM WWW   Вверх
TwisT_X
Дата 21.2.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



А как это сделать не подскажешь отредактируй этот код , плиз..
Цитата
просто делаешь цикл от 0 до 255



--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
maxim1000
Дата 21.2.2005, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата
Edit1.Text := CodeDecode(Edit1.Text, 10);

надо поменять на
Код

var
 k:word;
 s:string;
for k:=0 to 255 do
begin
 s:=CodeDecode(Edit1.Text,k);
 if(MessageBox(...s..."правильно?"...))then//тут надо еще у кого-нибудь спросить, т.к. параметров не помню
   break;
end;

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


--------------------
qqq
PM WWW   Вверх
TwisT_X
Дата 21.2.2005, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Цитата
if(MessageBox(...s..."правильно?"...))then//тут надо еще у кого-нибудь спросить, т.к. параметров не помню
  break;
end;

Что то я этого н понел..
А ты не пробовал откомплировать это приложение?


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
maxim1000
Дата 21.2.2005, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



Цитата
Что то я этого н понел..
А ты не пробовал откомплировать это приложение?

smile
нет, оно не откомпилится smile
я же написал: не помню параметров MessageBox (а Delphi в пределах досягаемости нету)
суть той строки такая: вывести на экран декодированное сообщение и спросить у пользователя, не смахивает ли это на правильный перевод


--------------------
qqq
PM WWW   Вверх
cardinal
Дата 21.2.2005, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



TwisT_X, ну тебе же надо просто сделать проход с одним ключем запомнить результат в какой-нибудь файл и делать проход со след. ключем. И так 255 раз. Потом окрываешь файл и смотришь. Одна из 255 расшифровок не будет белибердой, а будет твоим текстом (если исходный текст, конечно, не белиберда smile)...

Как XOR работает уже знаешь?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Fixin
Дата 21.2.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



И ведь необязательно весь текст каждый раз разшифровывать (внекоторых случаях). Взять N символов и прогнать, сохранить в файл перевод и ключ к нему. Но об этом уже написано. Если нужна готовая функ-я перевода, то скажи. Сделаю, может сейчас. Тоже интересно. smile
PM MAIL ICQ   Вверх
Fixin
Дата 21.2.2005, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: нет
Всего: 18



У XOR есть свойсво обратимости. То есть А XOR В = С, а потом С XOR В = А.
Шифруем А через ключ В и получаем С, а потом шифруем С через ключ В и получаем А.
А - исходный символ, В - ключевой, С - зашифрованный.

Я тут еще объяснял сам XOR, но нажал послать, когда был отключен от нети и все сообщение потерял...
PM MAIL ICQ   Вверх
TwisT_X
Дата 22.2.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



Fixin XOR - логическое исключающие ИЛИ, возращает true , если значение операндов не равны друг другу..
Цитата
То есть А XOR В = С, а потом С XOR В = А.

А этого я не понел?.



--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
cardinal
Дата 22.2.2005, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



01010011
xor
11110001
=
10100010

10100010
xor
11110001
=
01010011


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
TwisT_X
Дата 22.2.2005, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


It's works!
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.2.2005
Где: Earth

Репутация: нет
Всего: 4



cardinal то есть 1 и 1 или 0 и 0 то 0 а если 1 и 0 то 1
то есть если разные то всегда 1 , а одинаковые то 0.. Я правильно понел?.


--------------------
Если ты упадешь я буду рядом. (с) Асфальт
PM MAIL WWW   Вверх
cardinal
Дата 22.2.2005, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Я просто тебя процитирую, чтобы ответить на твой вопрос smile
Цитата(TwisT_X @ 22.2.2005, 13:27)
XOR - логическое исключающие ИЛИ, возращает true , если значение операндов не равны друг другу.

=
Цитата(TwisT_X @ 22.2.2005, 14:00)
то есть 1 и 1 или 0 и 0 то 0 а если 1 и 0 то 1
то есть если разные то всегда 1 , а одинаковые то 0



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0528 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.