![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
kupall |
|
||||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
зашифровать текст методом цезаря. алфавит-английские строчные буквы, сдвиг +3, и еще нужно ключ вводить с клавы.
вот что у меня получилось , но странно работает, точней шифрует нормально только первую букву. Подскажите что не так
|
||||
|
|||||
Keeper89 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 9 Всего: 58 |
||||
|
||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
да , в первой ссылке хорошая прога , но она делает только сдвиг на некоторое число , а мне надо чтоб еще на кодовое слово сдвигалось , а как туда замостить это я не знаю. а делфи знает такую функцию cesar , или в ней он просто задает как что-то новое?
по многим сайтам смотрел и везде шифр состоял из того что нужно передвинуть на какое-то число , а вот как так , чтобы еще и на слово , у меня не получается ![]() Это сообщение отредактировал(а) kupall - 2.6.2010, 10:15 |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Друг, опиши во всех подробностях словами, чего хочешь от шифра?
Допустим у нас есть буква "а" исходного текста. Сдвиг + 3 это: 3 = третья буква алфавита. То есть "В" Операция шифрования (1 (первая буква алфавита) + 3 третья буква алфавита = 4) Следовательно шифротекст для буквы а это четвертая буква то есть "г". В свое время писал шифровальщики. На VB. Все работало. Может, если объяснишь и на паскале сдюжу. Пожалуйста, объясняй в примерах. Это сообщение отредактировал(а) PsiMagistr - 2.6.2010, 15:46 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
дело в том , что сам по себе есть сдвиг +3 и плюс нам надо замостить кодовое слово , к примеру, yes.
и кодировка будет выглядеть типа того a b c d e f g h i j k l m n o p q r s t u v w x y z w x z y e s a b с d f g h i j k l m n o p q r t u v |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
НЕ совсем понял. Первая Срока алфавит. А вторая?
Сча кину тебе в личку скайп свяжись я там. Добавлено через 6 минут и 48 секунд ВСе кажется понял примерно, что ты хочешь. Поместить кодовое слово вовнутрь кодовой строки? psimagistr мой скайп. -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
да , первая строка алфавит . а под каждым символом стоит закодированный символ , и как видишь , ключ расположен со сдвигом +3 , эти буквы y e s потом не повторяються , то есть закрепляються за d e f . Это получаеться как бы шифр виженера и цезаря вместе
пока скайп найду и установлю |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Погоди минутку пишу кое что...
-------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
PsiMagistr |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Смотри,
Вот тебе предварительная функция, возвращающая алфавитную строчку, в зависимости от кодового слова и сдвига. Подключи модуль: StrUtils (расширенные строковые функции) Добавь на форму два компонента класса TEdit (Имя задай T и T2) и кнопку В первый Edit будешь писать длину сдвига Во второй кодовое слово на английском. Ключ. Теперь функция:
В обработчике кнопки запиши:
Теперь если введешь код yes а сдвиг 3 получишь: x y z y e s a b с d e f g h i j k l m n o p q r t u v w - строку шифроалфавита. Потом можно и шифровать. Это сообщение отредактировал(а) PsiMagistr - 2.6.2010, 18:26 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
||||
|
|||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
получилось , выдал сообщение как бы новый шифроалфавит , но в нем 29 букв и буквы y e s повторяються , получается две буквы кодируются одинаково
э но так нельзя . и получается что мы зашифровываем только то что напишем в коде проге , а не в потом в ручную. |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Так. Все теперь понял. Тебе надо убрать повторяющиеся значения? Так?
Это сообщение отредактировал(а) PsiMagistr - 2.6.2010, 18:50 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
да , именно)
|
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Сможешь завтра вернуться? Я попробую переписать кое что.
Кинь скайп, так быстрее будет. Это сообщение отредактировал(а) PsiMagistr - 2.6.2010, 19:08 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
а что если выводить ответ не сообщением , а в новый edit и новый алфавит вводит не в коде, а тоже в новый Edit. я так попробовал , но он пишет , что не понимает что такое Edit3 . это наверно новый модуль так действует?
|
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Сообщение здесь только для примера.
Это сообщение отредактировал(а) PsiMagistr - 2.6.2010, 19:10 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
да , думаю завтра смогу и скайп установлю наконец-то)
|
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Давай до завтра. А я пока подумаю, что можно сделать.
-------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
до завтра)
|
|||
|
||||
PsiMagistr |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
kupall, Кое что я вам придумал. Запишите:
Киньте на форму кнопку. И два текстовых поля. T и T2. Т будет хранить смещение. Т2 сам ключ. Запишите в обработчике: procedure TForm1.Button1Click(Sender: TObject); begin Preobrazovanie(StrToInt(T.Text), T2.Text); end; И вы увидите шифроалфавит. Обращайтесь. Это сообщение отредактировал(а) PsiMagistr - 3.6.2010, 13:49 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
||||
|
|||||
kupall |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 25.5.2010 Репутация: нет Всего: нет |
круто) спасибо большое))
|
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
В принципе можно даже внутренний цикл убрать. Он для того, чтобы даже если в алфавит закралась лишняя буква (дублер), она бы удалилась (если бы входила в ключ)
Добавлено @ 14:45
Вот я убрал внутренний цикл. Это сообщение отредактировал(а) PsiMagistr - 3.6.2010, 14:45 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
PsiMagistr |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Алекс-Юстасу или программа "Юный Штирлиц" (для шифровальщиков).
Шифратор Вижинера (тот же шифратор Цезаря но с переменной позицией ключа). Что-то подобное я писал на ВБ, а теперь решился повторить на Дельфи Шифратор Вижинера используется для шифрования текста по ключевому слову. Объясняю принцип действия "прибора": 1) Представим себе русский алфавит, замкнутый как бы в кольцо. То есть за буквой "я" идет "а". 2) Нам нужно зашифровать открытый текст: "гора" по ключевому слову: "дева" 3) Мы берем первый символ открытого текста: "г". Буква "г" занимает 4 позицию в алфавите. 4) Теперь берем первый символ ключа букву "д". Буква "д" занимает 5 позициую в алфавите. 5) Плюсуем позиции открытого текста и ключа. 4+5 := 9; Девятую позицию в русском алфавите занимает буква "3". 6) Значит "З" - первая буква шифровки. Выйти за пределы алфавита нельзя - он замкнут в кольцо. Точно так же нельзя выйти за пределы слова ключа (за последней буквой ключа идет первая и т.д.). Создайте проект и совершите необходимые приготовления: 1) Добавьте на форму два одинаковых поля класса TMemo с именами (Name) - txtOriginal и txtCode. В первом поле храним оригинальный текст, во втором получаем шифровку. Текстовое поле класса TEdit с именем (Name) - T. Здесь держим ключ. Добавьте также две кнопки. Не меняйте имен. Первая будет шифровать, вторая расшифровывать. Задайте соответствующие Caption Расположите компоненты аккуратно, по своему вкусу. Внимание код:
![]() Разработано и тестировано мною в среде Дельфи 6. P.S. Для начинающих прогммеров: не вздумайте шифровать "Войну и мир," "Три мушкетера" и все другие большие по объему тексты. Зависание в цикле гарантирую. Это сообщение отредактировал(а) PsiMagistr - 6.6.2010, 16:55 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
Shreder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 14.5.2012 Репутация: нет Всего: нет |
Помогите пожалуйста. Препод в универе задал разработать Delphi-проект шифрования данных методом Цезаря. Алфавит - ЛАТИНСКИЕ СТРОЧНЫЕ БУКВЫ, ключ "yes", сдвиг +5. Предусмотреть автоматическую передачу фокуса и очистку редакционных полей после выполнения программы. И вообще не понятно как делать... если сможете помогите чем сможете ) будет достаточно всего лишь кода программы(желательно с комментариями) . форму в Delphi оформить смогу.
Это сообщение отредактировал(а) Shreder - 14.5.2012, 17:11 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |