Основы криптоанализа
Автор: nastya200301s • Ноябрь 11, 2020 • Практическая работа • 4,138 Слов (17 Страниц) • 299 Просмотры
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Омский государственный технический университет»
Радиотехнический факультет
Кафедра «Комплексная защита информации»
Отчет по Практическому занятию № 2
дисциплины «История отрасли»
Тема: «Основы криптоанализа»
Выполнил студент гр. КЗИ-202 Симонова П.А.
Проверил преподаватель:
Асс. Цырульник В.Ф.
Омск 2020
СОДЕРЖАНИЕ
1. Задание 3
2. Описание выбранного метода шифрования 4
3. Листинг программы 5
4. Пример реализации 11
Задание
Для выполнения работы необходимо провести криптоанализ сообщения. Очевидно, что и в случае аффиного шифра простейшим способом взлома оказывается перебор всех возможных ключей. Но в результате перебора получится 312 различных текстов. Проанализировать такое количество сообщений можно и в ручную, но лучше автоматизировать этот процесс, используя такую характеристику как частота появления букв. Для автоматизации процесса была написана программа на c#.
Описание выбранного метода шифрования
Аффинный шифр — это частный случай более общего моноалфавитного шифра подстановки, в котором каждая буква в алфавите сопоставляется с ее числовым эквивалентом, зашифровывается с помощью простой математической функции и преобразуется обратно в букву. В аффинном шифре каждой букве алфавита размера m ставится в соответствие число из диапазона 0… m-1. Затем при помощи специальной формулы, вычисляется новое число, которое заменит старое в шифртексте.
Процесс шифрования можно описать следующей формулой:
[pic 1],
где x — номер шифруемой буквы в алфавите; m — размер алфавита; a, b — ключ шифрования.
Для расшифровки вычисляется другая функция:
[pic 2],
где a-1 — число обратное a по модулю m. Это значит, что для корректной расшифровки число a должно быть взаимно простым с m.
С учетом этого ограничения вычислим пространство ключей аффиного шифра на примере английского алфавита. Так как английский алфавит содержит 26 букв, то в качестве a может быть выбрано только взаимно простое с 26 число. Таких чисел всего двенадцать: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25. Число b в свою очередь может принимать любое значение в интервале от 0 до 25, что в итоге дает нам 12*26 = 312 вариантов возможных ключей.
Листинг программы
using System.Collections.Generic;
namespace Aphine_decoder
{
class Program
{
static string start = "";
static string alphabet = "abcdefghijklmnopqrstuvwxyz";
static double[] frequencyRate = new double[26];
static bool[] DoubleLetter = new bool[26];
static bool[] AfterApostroph = new bool[26];
static bool[,] One_two_threeLettersWord = new bool[26, 3];
static Dictionary<char, int> change = new Dictionary<char, int>();
static Dictionary<char, char> codeLetters = new Dictionary<char, char>() { { ' ', ' ' }, { '’', '’' }, { '-', '-' }, { ',', ',' }, { '.', '.' } };
static void Main(string[] args)
{
for (int i = 0; i < 26; i++)
{
change.Add(alphabet[i], i);
}//filling in a dictionary with symbol-number parity
//for example "a - 0", "b - 1", etc.
EnterLogo();//------------------------------------Сделай какое-нибудь красивове вступление и описание того, что должен делать пользователь, чтобы расшифровать текст
...