С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
 Аватар для oksi5697
13 / 13 / 3
Регистрация: 17.11.2011
Сообщений: 122

Расшифровать шифр Виженера-МГ

29.12.2011, 19:38. Показов 4308. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовать на ЛИСПе расшифровку сообщения в среде Allegro CL Lite 3.0.1.
Шифр - Виженера-МГ, ключ "ЭМУ", номер гаммирования 2 (с пропусканием пробелов и конца предложения), предикат ошибки - характеристическое отношение принадлежности части радиограммы к игнорируемому мусору - если-строка (в ЛИСПе stringp), радиограмма:
((((Л Э А Л) (О А Л Х)) ((Ф И Ъ «АРИИ» Э)) ((Р Ы Г
Э) (О Ю В Щ) (Ы Ь) «БАН» ) ((Ц)) ((В Л О Б) (Н Ъ Е Р)) ( «ХТПО» (П Б П
Ъ) (Х))) (((Б Ь У Ж) (О «ЛАТЬ» Ш Н)) ((Ъ Ф Т Ъ) (Ч Э)) ((Ы Г В «ГКИ»
Ы) (Т П Э Е) (Я Ф Т)) ((М Ъ Ч «ЗАР» З) (Ч С Ф С) (А))) (((Й С И Э)
«МЕЛУ» (Щ Ы З М)) ((Ц Л Ю Б) (Я М)))

Помогите пожалуйста, в ЛИСПе новичок не могу никак разобратся =(
Заранее огромное спасибо!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.12.2011, 19:38
Ответы с готовыми решениями:

Расшифровать шифр Виженера
Расшифруйте следующее сообщение с помощью шифра Виженера: «РРТЫОП – ОЧХЩЯ БИКВЯЦЩЁИСЪЯЛЯ ЮФОШВЮЯХЗЕЭЩЗ Т МКНЮЪ АРАЦИ СЯЪГЭЫНЮЪ...

Расшифровать шифр Виженера
Расшифруйте следующее сообщение с помощью шифра Виженера: «МЕТН-ЯВЛ – ФЦЮСНЩЕШ ЯЛЯНДЯЯКНХ СЪВОКЪЗЪЦ И УЪРНШЛНЬЕ (АЯОАРТЯЬ ВНЧЭЦОННХ ЦЬНЗЙФ)...

Расшифровать шифр Виженера с несколькими ключами
Добрый вечер. Не могу понять, как можно расшифровать шифр Виженера, если имеются 3 ключа. Задание: Не могу понять, как это...

4
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
29.12.2011, 20:42
А в радиограмме ошибки нет?
0
 Аватар для oksi5697
13 / 13 / 3
Регистрация: 17.11.2011
Сообщений: 122
29.12.2011, 20:50  [ТС]
Цитата Сообщение от bokunopico Посмотреть сообщение
А в радиограмме ошибки нет?
В общем в задании указано следующее:
"Радиограмма – это криптограмма
в виде S-выражения с избыточными для неё структурами и элементами, которые должны быть проигнорированными при истинности предиката ошибки."
0
313 / 268 / 5
Регистрация: 03.04.2011
Сообщений: 456
29.12.2011, 23:54
Круто. Я про то, правильно ли переписана радиограмма из задания? Перепроверьте, пожалуйста.

Добавлено через 3 часа 1 минуту
Да, в радиограмме не хватает одной закрывающей скобки, правда, мне казалось, там гораздо бОльшие неточности, потому что сообщение расшифровывалось неполностью. Но этому виной незнание алгоритма.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
; Радиограмма
(setq x '((((Л Э А Л) (О А Л Х)) ((Ф И Ъ "АРИИ" Э)) ((Р Ы Г Э) (О Ю В Щ) (Ы Ь) "БАН") ((Ц)) ((В Л О Б) (Н Ъ Е Р)) ("ХТПО" (П Б П Ъ) (Х)))
          (((Б Ь У Ж) (О "ЛАТЬ" Ш Н)) ((Ъ Ф Т Ъ) (Ч Э)) ((Ы Г В "ГКИ" Ы) (Т П Э Е) (Я Ф Т)) ((М Ъ Ч "ЗАР" З) (Ч С Ф С) (А)))
          (((Й С И Э) "МЕЛУ" (Щ Ы З М)) ((Ц Л Ю Б) (Я М)))))
 
; musor (x) - удаляет из криптограммы лишние структуры по предикату ошибки если-строка (stringp)
(defun musor (x)
  (cond ((null x) nil)
        ((listp (car x)) (cons (musor (car x)) (musor (cdr x))))
        ((stringp (car x)) (musor (cdr x)))
        (t (cons (car x) (musor (cdr x))))))
 
; killnill (x) - удаляет nil если таковые имеются
(defun killnill (x)
   (cond ((null x) nil)
         ((and (listp (car x)) (not (null (car x)))) (cons (killnill (car x)) (killnill (cdr x))))
         ((and (atom (car x)) (not (null (car x)))) (cons (car x) (killnill (cdr x))))
         ((and (atom (car x)) (null (car x))) (killnill (cdr x)))))
 
; slovo (x) - находит слова в списке по уровням вложенности
(defun slovo (x)
   (cond ((null x) nil)
         ((and (listp (car x)) (not (null (car x)))) (cons (caar x) (slovo (append (cdar x) (cdr x)))))
         ((and (atom (car x)) (not (null (car x)))) (cons (car x) (slovo (cdr x))))
         ((null (car x)) (slovo (cdr x)))))
 
; vseslova (x) - находит все слова по уровням вложенности в списке
(defun vseslova (x)
   (cond ((null x) nil)
         ((and (listp (caaar x)) (not (null (caaar x)))) (cons (vseslova (car x)) (vseslova (cdr x))))
         ((and (atom (caaar x)) (not (null (caaar x)))) (cons (list-to-delimited-string (slovo (car x)) "") (vseslova (cdr x)))) 
         ((null (caar x)) (vseslova (cons (cdar x) (cdr x))))))
 
; predloz (x) - находит предложения
(defun predloz (x)
   (cond ((null x) nil)
         ((listp (caar x)) (cons (predloz (car x)) (predloz (cdr x))))
         ((atom (caar x)) (cons (list-to-delimited-string (slovo (car x)) " ") (predloz (cdr x)))) 
         ((null (car x)) (predloz (cons (cdar x) (cdr x))))))
 
; И наконец fraza (x) - расставляет точки и пробелы в предложении где они нужны
(defun fraza (x)
   (list-to-delimited-string (slovo x) ". "))
 
(defun repeat (str alphabet key)
  (labels ((iter (accum lst in-key)
                 (let ((head (car lst))
                       (tail (cdr lst)))
                   (if lst
                    (if (find (car lst) alphabet)
                        (iter (concatenate 'string accum (string (elt key in-key)))
                              tail
                              (mod (1+ in-key) (length key)))
                      (iter (concatenate 'string accum (string head)) 
                            tail
                            in-key))
                  accum))))
    (iter "" (loop for i across str collect i) 0)))
 
;;; Функция расшифровывает криптограмму cryptogram с использованием
;;; ключа key и алфавита alphabet
(defun decrypt (cryptogram key alphabet)
  (cipher-generic cryptogram key alphabet
                  #'(lambda (c k alphabet length)
                      (mod (+ length
                              (- (position c alphabet)
                                 (position k alphabet)))
                           length))))
 
;;; Обобщенная функция, которая зашифровывает message с использованием
;;; ключа key, алфавита alphabet и операции над символами сообщения
(defun cipher-generic (message key alphabet operation)
  (let ((length (length alphabet)))
    (map 'string #'(lambda (m k)
                     (if (find m alphabet)
                         (elt alphabet (funcall operation m k alphabet length))
                         m))
      message (repeat message alphabet key))))
Весь код представляет простой копипаст из ранее обсуждаемых тем: тема 1 (избавление от мусора, конвертирование из списочной структуры) и тема 2 (непосредственно расшифровка). Единственное - кое-как осилил написание repeat, чтобы в повторяющемся ключе были пробелы, а не монолитные символы. В итоге:
Lisp
1
2
> (fraza (predloz (vseslova (killnill (musor x))))) ; избавиться от мусора
"ЛЭАЛОАЛХ ФИЪЭ РЫГЭОЮВЩЫЬ Ц ВЛОБНЪЕР ПБПЪХ. БЬУЖОШН ЪФТЪЧЭ ЫГВЫТПЭЕЯФТ МЪЧЗЧСФСА. ЙСИЭЩЫЗМ ЦЛЮБЯМ"
Lisp
1
2
3
4
5
; Расшифровка радиограммы
> (decrypt (fraza (predloz (vseslova (killnill (musor x))))) ; криптограмма
         "ЭМУ" ; ключ
         "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ") ; алфавит
"ОСНОВНОЙ БЛОК УПРАВЛЕНИЯ К ПОВОРОТУ ГОТОВ. ДРАЙВЕР ОБХОДА ПРЕПЯТСТВИЯ ПОДКЛЮЧЕН. МЕХАНИКА ГОТОВА"
1
 Аватар для oksi5697
13 / 13 / 3
Регистрация: 17.11.2011
Сообщений: 122
31.12.2011, 13:30  [ТС]
спасибочки огромное! очень выручили!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.12.2011, 13:30
Помогаю со студенческими работами здесь

Шифр Виженера. Метод перебора. Расшифровать - Криптография
Помогите пожалуйста! Известна длина ключа, расшифровать текст (пробел является частью алфавита) Длина ключа: 4 Зашифрованый текст ...

Шифр Виженера, необходимо подобрать ключ и расшифровать
Помогите пожалуйста, есть текст зашифрованный шифром Виженера, необходимо подобрать ключ и расшифровать. ...

Шифр Виженера. Метод перебора. Расшифровать - Криптография
С помощью метода полного перебора восстановить исходный текст шифрограммы, зашифрованной шифром Виженера с длинной ключа 3. помогите...

Расшифровать числовой шифр (предположительно шифр простой замены)
Доброго времени суток! Не могу расшифровать такое вот послание: 3632623163626461393766653039373630393861303036663338353761626662 ...

Шифр Виженера, шифр Скитала
Я много прочитал информации и захотел реализовать эти шифры на Buider C++, а вот как это сделать. Кому интересно, напишите мне примеры этих...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru