Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
Maxon987
1 / 1 / 0
Регистрация: 10.12.2015
Сообщений: 10
1

Расшифровка закодированного текста шифром Цезаря частотным криптоанализом

21.12.2015, 19:22. Просмотров 923. Ответов 0
Метки нет (Все метки)

Суть программы состоит в расшифровке закодированного текста шифром Цезаря частотным криптоанализом.
Сначала задаю шаблон с уже известными частотами русских букв.
После, подключаю текстовый файл, в котором лежит зашифрованный текст.
Затем, считаю частоты появления букв в зашифрованном тексте.
Далее, сортирую оба массива по возрастанию.
И произвожу замену каждой буквы в исходном тексте.
И получается какая-то ересь.
Не понимаю, что не так(
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
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
type 
 
  t_r = record
    c:char;
    che:real;
  end;
 
var  
  a,b: array[1..33] of t_r;
  ch:char;
  j,i,k:integer;
  f1,f2:text;
begin
  //Задаем массив-шаблон
  a[1].c:= 'О'; a[01].che:=0.109830;
  a[2].c:= 'Е'; a[02].che:=0.084830;
  a[3].c:= 'А'; a[03].che:=0.079980;
  a[4].c:= 'И'; a[04].che:=0.073670;
  a[5].c:= 'Н'; a[05].che:=0.067000;
  a[6].c:= 'Т'; a[06].che:=0.063180;
  a[7].c:= 'С'; a[07].che:=0.054730;
  a[8].c:= 'Р'; a[08].che:=0.047460;
  a[9].c:= 'В'; a[09].che:=0.045330;
  a[10].c:='Л'; a[10].che:=0.043430;
  a[11].c:='К'; a[11].che:=0.034860;
  a[12].c:='М'; a[12].che:=0.032030;
  a[13].c:='Д'; a[13].che:=0.029770;
  a[14].c:='П'; a[14].che:=0.028040;
  a[15].c:='У'; a[15].che:=0.026150;
  a[16].c:='Ч'; a[16].che:=0.020010;
  a[17].c:='Ы'; a[17].che:=0.018980;
  a[18].c:='Ь'; a[18].che:=0.017350;
  a[19].c:='Г'; a[19].che:=0.016870;
  a[20].c:='З'; a[20].che:=0.016410;
  a[21].c:='Б'; a[21].che:=0.015920;
  a[22].c:='Ч'; a[22].che:=0.014500;
  a[23].c:='Й'; a[23].che:=0.012080;
  a[24].c:='Х'; a[24].che:=0.009660;
  a[25].c:='Ж'; a[25].che:=0.009400;
  a[26].c:='Ш'; a[26].che:=0.007180;
  a[27].c:='Ю'; a[27].che:=0.006390;
  a[28].c:='Ц'; a[28].che:=0.004860;
  a[29].c:='Щ'; a[29].che:=0.003610;
  a[30].c:='Э'; a[30].che:=0.003310;
  a[31].c:='Ф'; a[31].che:=0.002670;
  a[32].c:='Ъ'; a[32].che:=0.000370;
  a[33].c:=' '; a[33].che:=0.145000;
  for i:=1 to 33 do b[i].c:=a[i].c;
  
  
  
  assign(f1,'4.txt');
  reset(f1);
  k:=0;
  while not eof(f1) do 
    begin
      read(f1,ch);
      inc(k);
      ch:=upcase(ch);
      for i:=1 to 33 do 
        if ch=b[i].c then b[i].che:=b[i].che+1;
      inc(k);
    end;
  close(f1);
  
 //Частота букв в зашифрованном тексте
  for i:=1 to 33 do b[i].che:=b[i].che/k;
  //Сортировка массива с частотами-шаблоном
  for i := 1 to 33 - 1 do
    for j := 1 to 33-i  do
      if a[j].che < a[j + 1].che 
        then
          begin
            swap(a[j].che, a[j + 1].che);
            swap(a[j].c, a[j + 1].c);
          end;
 
  //Сортировка массива с частотами зашифрованного текста
  for i := 1 to 33 - 1 do
    for j := 1 to 33-i  do
      if b[j].che < b[j + 1].che 
        then
          begin
            swap(b[j].che, b[j + 1].che);
            swap(b[j].c, b[j + 1].c);
          end;
  
  for i:=1 to 33 do 
  writeln(a[i].c,'|',a[i].che,'|',b[i].c,'|',b[i].che,'|');
  //Расшифровка текста
  assign(f2,'out.txt');
  rewrite(f2);
  reset(f1);
  while not eof(f1) do
    begin
      read(f1,ch);
      ch:=upcase(ch);
      for i:=1 to 33 do 
        if ch=b[i].c then ch:=a[i].c;
        write(f2,ch);
    end;
  close(f1);
  close(f2);
   
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2015, 19:22
Ответы с готовыми решениями:

Расшифровка методом цезаря
Помогите написать программу для расшифровки методом цезаря расшифровать текст....

Шифрование/дешифрование текста циклическим шифром со сдвигом на 5 позиций
Доброго времени суток! Обращаюсь к вам с такой вот задачей,надеюсь на вашу...

Шифрование/дешифрование текста циклическим шифром со сдвигом на 10 позиций
Напишите программы шифрования и дешифрования текста циклическим шифром со...

Составить программу, реализующую механизм шифрования текста шифром Вижинера
Доброго времени суток! Передо мной стоит несколько задач: 1) Составить...

Расшифровка текста
народ очень прошу помогите.Нужно решить задачу:В записке зашифрованы ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.12.2015, 19:22

Шифр Цезаря, подключить считывание текста из файла
вот собственно код программы, не умею работать с файлами, помогите подключить...

Формирование закодированного сообщения
Помогите пожалуйста с задачей При передачи данных используется система...

Создать приложение шифрования и дешифрования текста шифром Цезаря
Сделать приложение шифрования и дешифрования текста. Пользователь вводит фразу,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru