![]() |
|
|
![]()
|
|
| TwisT_X |
|
|||
![]() 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 -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
ну есть такой метод шифрования
отправителю и получателю известно 8-битное число (ключ) отправитель при отправке каждого символа делает xor с ключом, получается другой символ, его и отправляют, получатель после приема опять делает xor с ключом, получает исходных символ тот, кто не знает ключа, не знает, с чем делать xor, а значит, не может получить исходный символ и прочитать сообщение -------------------- qqq |
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: нет Всего: 4 |
Но как подобрать сам ключ..
И как (используя этот код) написать программу, которая перебирала все возможные значения ключа (а их всего 255).. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
вообще-то хорошим алгоритмом шифрования считается тот, в котором подобрать ключ можно только перебором
а перебором: просто делаешь цикл от 0 до 255, расшифровываешь, показываешь пользователю, спрашиваешь "похоже на правду?" -------------------- qqq |
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: нет Всего: 4 |
А как это сделать не подскажешь отредактируй этот код , плиз..
-------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| maxim1000 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
надо поменять на
суть в том, что попробовать все ключи можно, но нужно ведь еще и найти среди них правильный результат не зная исходного сообщения остается только смотреть на результаты расшифровки и отбрасывать те, которые сильно напоминают абракадабру (хорошо, если текст зашифрован, если файл какой-нибудь, вооще ничего не получится), если в конце ничего не осталось, значит, выбросили что-то нужное, если остался один - радуемся, если осталось куча, думаем, как выбрать... -------------------- qqq |
||||
|
|||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: нет Всего: 4 |
Что то я этого н понел.. А ты не пробовал откомплировать это приложение? -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
нет, оно не откомпилится я же написал: не помню параметров MessageBox (а Delphi в пределах досягаемости нету) суть той строки такая: вывести на экран декодированное сообщение и спросить у пользователя, не смахивает ли это на правильный перевод -------------------- qqq |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
TwisT_X, ну тебе же надо просто сделать проход с одним ключем запомнить результат в какой-нибудь файл и делать проход со след. ключем. И так 255 раз. Потом окрываешь файл и смотришь. Одна из 255 расшифровок не будет белибердой, а будет твоим текстом (если исходный текст, конечно, не белиберда
Как XOR работает уже знаешь? -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: нет Всего: 18 |
И ведь необязательно весь текст каждый раз разшифровывать (внекоторых случаях). Взять N символов и прогнать, сохранить в файл перевод и ключ к нему. Но об этом уже написано. Если нужна готовая функ-я перевода, то скажи. Сделаю, может сейчас. Тоже интересно.
|
|||
|
||||
| Fixin |
|
|||
![]() Ёжик ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1357 Регистрация: 6.1.2004 Репутация: нет Всего: 18 |
У XOR есть свойсво обратимости. То есть А XOR В = С, а потом С XOR В = А.
Шифруем А через ключ В и получаем С, а потом шифруем С через ключ В и получаем А. А - исходный символ, В - ключевой, С - зашифрованный. Я тут еще объяснял сам XOR, но нажал послать, когда был отключен от нети и все сообщение потерял... |
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: нет Всего: 4 |
Fixin XOR - логическое исключающие ИЛИ, возращает true , если значение операндов не равны друг другу..
А этого я не понел?. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
01010011
xor 11110001 = 10100010 10100010 xor 11110001 = 01010011 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| TwisT_X |
|
|||
![]() It's works! ![]() ![]() Профиль Группа: Участник Сообщений: 293 Регистрация: 15.2.2005 Где: Earth Репутация: нет Всего: 4 |
cardinal то есть 1 и 1 или 0 и 0 то 0 а если 1 и 0 то 1
то есть если разные то всегда 1 , а одинаковые то 0.. Я правильно понел?. -------------------- Если ты упадешь я буду рядом. (с) Асфальт |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 5 Всего: 99 |
Я просто тебя процитирую, чтобы ответить на твой вопрос
=
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |