Индивидуальная практическая работа по «Теории информации»
Автор: Nastassiya Khvatynets • Декабрь 6, 2020 • Практическая работа • 4,316 Слов (18 Страниц) • 495 Просмотры
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Кафедра программного обеспечения информационных технологий
Факультет ЗВиДО
Специальность ПОИТ
Индивидуальная практическая работа №1
по дисциплине «Теория информации»
Вариант № 5
Выполнил студент: Хватынец А.В.
группа 791051
Зачетная книжка № 6910024
Минск 2020
Задание
Омофонный шифратор, использующий в качестве омофонов трехзначные целые числа и англоязычные исходные тексты. Текст читать из файла. Программа должна шифровать только символы заданного алфавита, игнорируя все другие символы. Результат работы программы – зашифрованный/расшифрованный файл. Дополнительно вывести на экран сопоставление целых трехзначных чисел омофонов выбранным буквам английского языка. Программа не должна быть реализована в консольном режиме.
Введение
Система омофонов. В 1401 г. Симеоне де Крема стал использовать таблицы омофонов для сокрытия частоты появления гласных букв в тексте при помощи более чем одной шифрозамены. Такие шифры позже стали называться шифрами многозначной замены или омофонами2. Они получили развитие в XV веке. В книге «Трактат о шифрах» Леона Баттисты Альберти (итальянский ученый, архитектор, теоретик искусства, секретарь папы Климентия XII), опубликованной в 1466 г., приводится описание шифра замены, в котором каждой букве ставится в соответствие несколько эквивалентов, число которых пропорционально частоте встречаемости буквы в открытом тексте. Так, если ориентироваться на данную таблицу
[pic 1],
то число шифрозамен для буквы О должно составлять 110, для буквы Е – 85 и т.д. При этом каждая шифрозамена должна состоять из 3 цифр и их общее количество равно 1000.
На рис.2 представлен фрагмент таблицы шифрозамен.
[pic 2]
Решение
Разработка программного обеспечения производилась Visual Studio 2019. Программа реализована на C#.
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Generator
{
public class Controller
{
public string GetBaseText { private set; get; }
public string GetOrigText { private set; get; }
public string GetCipherText { private set; get; }
private string PathOrig;
//выбор файла с текстом ,который требуется зашифровать
public bool SelectOrigFile(string source)
{
var text = System.IO.File.ReadAllText(source);
PathOrig = source;
var result = ValidateBaseText(text);
GetOrigText = text;
return result;
}
//выбор зашифрованного файла
public bool SelectCipherFile(string source)
{
var text = System.IO.File.ReadAllText(source);
GetCipherText = text;
var result = ValidateCipherText(text);
return true;
}
//выбор базового текста для создания таблицы омофонов
public bool SelectBaseFile(string source)
{
var text = System.IO.File.ReadAllText(source);
var result = ValidateBaseText(text);
...