Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 12

Шифрование методом простой замены в Pascal ABC

08.05.2018, 22:55. Показов 4196. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Имею такое задание:
Дан тест, зашифрованный методом простой замены. Требуется выполнить его дешифровку.
Нужно провести частотный анализ, после взять другой (случайный) текст и сопоставить их.
Сам текст:

П пчшъэъ зчгчяч явдзфл мчзфмуя бщбщ Евизъз ъжичнчяпщ п зфш, мчм п жъшжъы счшвбявззъэъ бвыпдефщ. Бвяъ е дъш, гдъ Эчииф жйя ф е пчшъш бвяв звъжйгзйы шчяогфм, зв дчмъы, мчм епв. Эчииф Ёъддви жйя еъятвжзфмъш. Ъз ёифвлчя бъшъы зч мчзфмуяй, счмъзгфе ёвиейы муип Тмъяй гчиъбвыпдеч ф еъятвжпдеч «Лъэечидп», гдъ зч еъятвжзъш щсймв сзчгфд «евёио». Впдвпдевззъ, Буивяф зв ъжичбъечяфпо вэъ ёифвсбу, зъ кдъ ёупдщмф ёъ пичезвзфц п двш, гдъ гуепдеъечя, рфещ е кдъш бъшв, Эчииф. Ъз ъгвзо пмугчя ёъ тмъяв, пмугчя ёъ счшму, вэъ дчфзпдевззйш ёвивлъбчш, ёифефбвзфщш, ёъ уиъмчш ф угфдвящш (зъ, мъзвгзъ, зв ёъ Пзвээу, ёивёъбчечетвшу еъятвжзъв свяовечивзфв), ёъ ъжнфш дичёвсчш е Жъяотъш счяв. Ч мчмчщ у звэъ счшвгчдвяозчщ миъечдо ёъб ёъяъэъш зч гвдйивл пдъяжфмчл е миуэяъы пёчяозв зч пчшъш евилу жчтзф! Ёъгду ёифзъпщд пъей, ч е лфрфзв зч ъёутмв Счёивдзъэъ явпч рфевд бъжийы явпзфгфы Лчэифб. Зъ ъпъжвззъ ъз пмугчя ёъ мефббфгу, яцжфшъы фэив еъятвжзфмъе: твпдо мъява зч ейпъмфл твпдчл, гвдйив ёчищнфл шщгч ф гвдйизчбачдо фэиъмъе евилъш зч швдячл. Ёифевсщ ёявшщззфмч бъшъы, бщбщ Евизъз ёвиейш бвяъш ъдъжичя у звэъ евпо еъятвжзйы пмчиж — угвжзфмф, ёчяъгму, шчздфц ф швдяу зъевытвы шъбвяф «Зфшжуп-2000». Епв кдъ ъдёичефяъпо е гуячз ёъб явпдзфавы ф жйяъ счёвидъ зч счшъм. Буипящш зчёявечдо, гдъ Ячииф зв ейёъязфд явдзвэъ бъшчтзвэъ счбчзфщ, ч жвс дивзфиъеъм вэъ фпмяцгчд фс мъшчзбй ючмуяодвдч. Ъжйгзйл яцбвы, е гофл рфячл звд зф мчёяф еъятвжзъы миъеф, шчэф зчсйечцд «шчэяй», гдъ зч фл щсймв сзчгфд «ёиъпдчмф». Бящ ёиъпдчмъе — зв бящ епвл, мъзвгзъ — еъятвжзфм е пвшов — ёъсъи. Ф гдъжй ёивпвго епщмуц пещсо п шфиъш гчиъбвыпдеч ф мъябъепдеч, бщбщ Евизъз бчрв пъеу Жумяц ёъпчбфя ёъб счшъм.

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

С самого начала летних каникул дядя Вернон обращался... и т.д.
Путем взрыва мозга подобрала ключ (см. вложение)

Подскажите пожалуйста, как реализовать автоматический подбор ключа в программе Паскаль, т.е. как написать саму эту программу? Не работала в Паскаль 12 лет. Из всего, что помню Read Ln, Write Ln и все....
Шарила по форуму, нашла:
Шифр простой замены
Как это можно переделать для моей задачи?
Миниатюры
Шифрование методом простой замены в Pascal ABC  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.05.2018, 22:55
Ответы с готовыми решениями:

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

Шифрование/дешифрование файла методом простой замены
Плз очень нужна программа на Delphi (способ перестановки символов при ключе 416732) чтобы вводился ключ и шифровался текст в файле потом...

Шифрование методом Цезаря/простого перемещения/двойного перемещения/простой замены
Всем привет, так случилось что мне задали за пару дней сделать программу шифрования и дешифрования инф. На Делфи время ни очень мало, + на...

4
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 12
09.05.2018, 04:42  [ТС]
Пы.Сы. Насколько я понимаю, необходимо выполнить частотный анализ символов шифротекста. После этого, сравнить частоту символов в закодированном тексте с частотностью букв русского языка https://ru.wikipedia.org/wiki/... 1%82%D1%8C

а потом заменить символы по частоте.... Например если буква т встречается с частотой 11%, то это буква о....
Так что ли??? Блин...Как это реализовать в программе?

Добавлено через 41 минуту
Попробовала так.... но... фигня какая-то получается... Еще путаница заглавные/строчные буквы...

Pascal
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
var A: array[1..33] of integer;
     S, T: string;
     f: text;
     i, n, kol: integer;
begin
 for i:=1 to 33 do A[i]:= 0; 
 S := 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'; // весь алфавит
 kol := 31; // общее кол-во заглавных букв русск. алф в тексте
 
 assign(f, 'in.txt'); 
 reset(f);
 
 while not eof(f) do
 begin
    readln(f, t); 
    for i:= 1 to length(t) do 
    begin n :=  pos(t[i],s);
            if n>0 then 
            begin
               A[n]:= A[n]+1; kol:=kol+1;
            end;
    end;
 end;
 close(f);
 if kol > 0 then 
    for i:=1 to 33 do  
     begin  A[i] := round(A[i]*100/kol); // частота в %% 
              writeln('Частота для буквы "', s[i], '" = ', A[i]); 
     end   
 else writeln('В тексте нет русских заглавных букв');
end.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33378 / 21502 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
09.05.2018, 10:04
Итого имеем отрывок из Гарри Поттера:
С самого начала летних каникул дядя Вернон обращался с ним, как с бомбой замедленного действия. Дело в том, что Гарри был и в самом деле необычный мальчик, не такой, как все. Гарри Поттер был волшебником. Он приехал домой на каникулы, закончив первый курс Школы чародейства и волшебства «Хогвартс», что на волшебном языке значит «вепрь». Естественно, Дурсли не обрадовались его приезду, но это пустяки по сравнению с тем, что чувствовал, живя в этом доме, Гарри. Он очень скучал по школе, скучал по замку, его таинственным переходам, привидениям, по урокам и учителям (но, конечно, не по Снейпу, преподававшему волшебное зельеварение), по общим трапезам в Большом зале. А какая у него замечательная кровать под пологом на четырёх столбиках в круглой спальне на самом верху башни! Почту приносят совы, а в хижине на опушке Запретного леса живёт добрый лесничий Хагрид. Но особенно он скучал по квиддичу, любимой игре волшебников: шесть колец на высоких шестах, четыре парящих мяча и четырнадцать игроков верхом на мётлах. Привезя племянника домой, дядя Вернон первым делом отобрал у него весь волшебный скарб — учебники, палочку, мантию и метлу новейшей модели «Нимбус-2000». Всё это отправилось в чулан под лестницей и было заперто на замок. Дурслям наплевать, что Гарри не выполнит летнего домашнего задания, а без тренировок его исключат из команды факультета. Обычных людей, в чьих жилах нет ни капли волшебной крови, маги называют «маглы», что на их языке значит «простаки». Для простаков — не для всех, конечно — волшебник в семье — позор. И чтобы пресечь всякую связь с миром чародейства и колдовства, дядя Вернон даже сову Буклю посадил под замок.
Что для этого понадобилось:
1) составляем строку из всех символов, присутствующих в таблице частотности. В том же порядке. Потому что с большой степенью вероятности если буква на первом месте в таблице частотности, то и заменяющая ее буква тоже будет на том же первом месте по частоте встречаемости в зашифрованном тексте. Назовем эту строку freqs
2) считаем общее количество букв (без знаков препинания) в тексте
3) для каждого символа из текста (безразлично, в каком регистре он записан, заглавная буква или строчная - неважно, в статистике это не учитывается. Это будет учитываться потом, уже когда будем менять буквы) считаем количество его появлений в тексте. И вычисляем частоту (то есть, количество появлений / общее количество букв в тексте)
4) строим строку из символов текста, расположенных в порядке убывания частоты. Назовем эту строку chars
5) и теперь еще раз идем по тексту, и заменяем буквы: если в chars буква на i-ом месте - то заменяем ее на i-ую букву из freqs

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

Код показывать не буду, я писал не на Паскале, поэтому здесь он не актуален.
0
0 / 0 / 0
Регистрация: 24.02.2016
Сообщений: 12
09.05.2018, 12:46  [ТС]
Спасибо большое... но к сожалению... не поднять мне эту задачу. Как ни крутила не пойму как это написать и куда ту freqs вставить...
0
Эксперт Pascal/Delphi
2388 / 1300 / 1492
Регистрация: 29.08.2014
Сообщений: 4,665
09.05.2018, 16:41
как-то так:
Pascal
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
var
  a,b:array[0..31] of record
       c:char;
       freq:real;
      end;     
   la,lb:integer;
begin
  var sa:=uppercase(System.IO.File.ReadAllText('sample.txt',Encoding.GetEncoding(1251)));//прочитали текст для составления таблицы частотности
  var sb:=uppercase(System.IO.File.ReadAllText('shifr.txt',Encoding.GetEncoding(1251)));//прочитали зашифрованный текста
  //собираем статистику
  //таблица частотности
  for var i:=1 to length(sa) do if sa[i] in ['А'..'Я'] then begin 
    a[ord(sa[i])-ord('А')].freq+=1;
    a[ord(sa[i])-ord('А')].c:=sa[i];
    inc(la);
  end;
  for var i:=0 to 30 do
    for var j:=i+1 to 31 do
      if a[i].freq<a[j].freq then swap(a[i],a[j]);
  for var i:=0 to 31 do begin a[i].freq/=la; {writeln(a[i].c,':',a[i].freq);}end;
  //частота повторения символа в зашифрованном тексте
  for var i:=1 to length(sb) do if sb[i] in ['А'..'Я'] then begin 
    b[ord(sb[i])-ord('А')].freq+=1;
    b[ord(sb[i])-ord('А')].c:=sb[i];
    inc(lb);
  end;
  for var i:=0 to 30 do
    for var j:=i+1 to 31 do
      if b[i].freq<b[j].freq then swap(b[i],b[j]);
  for var i:=0 to 31 do begin b[i].freq/=lb; {writeln(b[i].c,':',b[i].freq);}end;
 
  //заменяем буквы в шифровке по частоте
  for var i:=1 to length(sb) do 
     if sb[i] in ['А'..'Я'] then begin 
       for var j:=0 to 31 do if sb[i]=b[j].c then write(a[j].c);
     end else write(sb[i]);  
end.
в итоге получается примерно такая галиматья:

Не по теме:

С САМОЫО НАДАЛА ЛЕТНИЙ КАНИКЧЛ ПБПБ ВЕРНОН ОУРАЦАЛСБ С НИМ, КАК С УОМУОГ ЗАМЕПЛЕННОЫО ПЕГСТВИБ. ПЕЛО В ТОМ, ДТО ЫАРРИ УЯЛ И В САМОМ ПЕЛЕ НЕОУЯДНЯГ МАЛЬДИК, НЕ ТАКОГ, КАК ВСЕ. ЫАРРИ ЁОТТЕР УЯЛ ВОЛХЕУНИКОМ. ОН ЁРИЕЙАЛ ПОМОГ НА КАНИКЧЛЯ, ЗАКОНДИВ ЁЕРВЯГ КЧРС ХКОЛЯ ДАРОПЕГСТВА И ВОЛХЕУСТВА «ЙОЫВАРТС», ДТО НА ВОЛХЕУНОМ БЗЯКЕ ЗНАДИТ «ВЕЁРЬ». ЕСТЕСТВЕННО, ПЧРЕЛИ НЕ ОУРАПОВАЛИСЬ ЕЫО ЁРИЕЗПЧ, НО ЭТО ЁЧСТБКИ ЁО СРАВНЕНИШ С ТЕМ, ДТО ДЧВСТВОВАЛ, ЮИВБ В ЭТОМ ПОМЕ, ЫАРРИ. ОН ОДЕНЬ СКЧДАЛ ЁО ХКОЛЕ, СКЧДАЛ ЁО ЗАМКЧ, ЕЫО ТАИНСТВЕННЯМ ЁЕРЕЙОПАМ, ЁРИВИПЕНИБМ, ЁО ЧРОКАМ И ЧДИТЕЛБМ (НО, КОНЕДНО, НЕ ЁО СНЕЫЫЧ, ЁРЕЁОПАВАВХЕМЧ ВОЛХЕУНОЕ ЗЕЛЬЕВАРЕНИЕ), ЁО ОУЦИМ ТРАЁЕЗАМ В УОЛЬХОМ ЗАЛЕ. А КАКАБ Ч НЕЫО ЗАМЕДАТЕЛЬНАБ КРОВАТЬ ЁОП ЁОЛОЫОМ НА ДЕТЯРЕЙ СТОЛУИКАЙ В КРЧЫЛОГ СЁАЛЬНЕ НА САМОМ ВЕРЙЧ УАХНИ! ЁОДТЧ ЁРИНОСБТ СОВЯ, А В ЙИЮИНЕ НА ОЁЧХКЕ ЗАЁРЕТНОЫО ЛЕСА ЮИВЕТ ПОУРЯГ ЛЕСНИДИГ ЙАЫРИП. НО ОСОУЕННО ОН СКЧДАЛ ЁО КВИППИДЧ, ЛШУИМОГ ИЫРЕ ВОЛХЕУНИКОВ: ХЕСТЬ КОЛЕЖ НА ВЯСОКИЙ ХЕСТАЙ, ДЕТЯРЕ ЁАРБЦИЙ МБДА И ДЕТЯРНАПЖАТЬ ИЫРОКОВ ВЕРЙОМ НА МЕТЛАЙ. ЁРИВЕЗБ ЁЛЕМБННИКА ПОМОГ, ПБПБ ВЕРНОН ЁЕРВЯМ ПЕЛОМ ОТОУРАЛ Ч НЕЫО ВЕСЬ ВОЛХЕУНЯГ СКАРУ — ЧДЕУНИКИ, ЁАЛОДКЧ, МАНТИШ И МЕТЛЧ НОВЕГХЕГ МОПЕЛИ «НИМУЧС-2000». ВСЕ ЭТО ОТЁРАВИЛОСЬ В ДЧЛАН ЁОП ЛЕСТНИЖЕГ И УЯЛО ЗАЁЕРТО НА ЗАМОК. ПЧРСЛБМ НАЁЛЕВАТЬ, ДТО ЛАРРИ НЕ ВЯЁОЛНИТ ЛЕТНЕЫО ПОМАХНЕЫО ЗАПАНИБ, А УЕЗ ТРЕНИРОВОК ЕЫО ИСКЛШДАТ ИЗ КОМАНПЯ ЩАКЧЛЬТЕТА. ОУЯДНЯЙ ЛШПЕГ, В ДЬИЙ ЮИЛАЙ НЕТ НИ КАЁЛИ ВОЛХЕУНОГ КРОВИ, МАЫИ НАЗЯВАШТ «МАЫЛЯ», ДТО НА ИЙ БЗЯКЕ ЗНАДИТ «ЁРОСТАКИ». ПЛБ ЁРОСТАКОВ — НЕ ПЛБ ВСЕЙ, КОНЕДНО — ВОЛХЕУНИК В СЕМЬЕ — ЁОЗОР. И ДТОУЯ ЁРЕСЕДЬ ВСБКЧШ СВБЗЬ С МИРОМ ДАРОПЕГСТВА И КОЛПОВСТВА, ПБПБ ВЕРНОН ПАЮЕ СОВЧ УЧКЛШ ЁОСАПИЛ ЁОП ЗАМОК.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.05.2018, 16:41
Помогаю со студенческими работами здесь

Шифрование методом замены
Задание 1 Решить задачу, используя один из классов строк: String или StringBuilder. Дизайн формы разработать самостоятельно....

Шифрование методом замены (подстановки)

Произвести шифрование методом замены
Помогите, пожалуйста с заданием Разработать, отладить и выполнить Java-программу в соответствии с приведенными заданиями. 1. ...

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

Шифрование методом многоалфавитной замены
Есть алфавитный массив со сдвигом вправо Хочу вывести этот массив в стринггрид но не получаеться. Выходят только первая строка и первый...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru