Изучение криптографических систем, основанных на методе подстановки

Методы подстановки, основанные на умножении номера каждого символа исходного текста на значение ключа. Реализация алгоритма и программы шифрования исходного текста в системе класса monoalphabetic. Алгоритм решения (блок-схемы). Написание текста программы.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 21.10.2016
Размер файла 103,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки республики Беларусь

Белорусский национальный технический университет

Факультет информационных технологий и робототехники

Кафедра программного обеспечения вычислительной техники и автоматизированных систем

Лабораторная работа

по дисциплине: "Теория информации"

на тему: "Изучение криптографических систем, основанных на методе подстановки"

Выполнил:

Бесчетвертный М.В.

Журавков Д.А.

Приняла: ст.пр. Несенчук А.А.

Минск 2015

Теоретические сведения

В системах monoalphabetic символ исходного текста заменяется другим символом таким образом, что между ними существуют однозначное соответствие. То есть каждый символ исходного текста однозначно заменяется его подстановкой. Криптографическим ключом такой системы является таблица соответствия исходного алфавита алфавиту подстановки.

Существуют методы подстановки, основанные на умножении номера каждого символа исходного текста на значение ключа k,

Ek(i) = (i*k) mod n (1)

где

extend

Задание:

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

Ek=i*k (mod m). программа ключ символ алгоритм

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

Алгоритм решения (блок-схемы):

Рисунок 1 - Блок-схема алгоритма

Текст программы:

Form1.cs:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace crypt

{

public partial class Form1 : Form

{

Crypt cr;

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

cr = new Crypt(1);

}

private void button1_Click(object sender, EventArgs e)//шифрование

{

if (readKeyField())

{

var plaintext = cr.Encode(textBox1.Text);

if (plaintext == null) checkSymbolErr();

else textBox2.Text = plaintext;

}

}

private void button2_Click(object sender, EventArgs e)//расшифровка

{

if (readKeyField())

{

var cyphertext = cr.Decode(textBox5.Text);

if (cyphertext == null) checkSymbolErr();

else textBox4.Text = cyphertext;

}

}

private bool readKeyField()//считывает ключ из поля textbox или выводит ошибку

{

uint key;

if (uint.TryParse(textBox3.Text, out key))

{

if (key == 0) MessageBox.Show("Ключ не может быть равен 0", "Ошибка");

else

{

cr.Key = key;

if (cr.CheckBadKey()) MessageBox.Show("Неверный ключ.\nШифр повторится на букве: " + cr.GetErrorLetter(), "Ошибка");

else return true;

}

}

else

{

MessageBox.Show("Не введен ключ", "Ошибка");

}

return false;

}

private void checkSymbolErr()//вывод ошибки, если ключ не взаимно прост с модулем

{

if(cr.CheckSymbolError()) MessageBox.Show("Введены неверные символы" + cr.GetErrorLetter(), "Ошибка");

}

}

}

Program.cs:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

namespace crypt

{

static class Program

{

/// <summary>

/// The main entry point for the application.

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

}

class Crypt

{

private uint _Key;

public uint Key

{

set

{

if (value == 0)

{

_Key = 1;

NodMK = 1;

}

else

{

_Key = value;

NodMK = NOD(Mod, Key);

}

}

get

{

return _Key;

}

}

private const uint Mod = 26;

private const char StartLetter = 'a';

private uint NodMK;

private bool SymbolError;//флаг неверного символа

public Crypt(uint key)

{

Key = key;

}

public bool CheckBadKey()//возвращает true, если ключ не взаимно прост с модулем

{

if (NodMK == 1) return false;

else return true;

}

public bool CheckSymbolError()

{

return SymbolError;

}

public string Encode(string str)//возвращает шифрованный текст или null при ошибке

{

if (CheckBadKey()) return null;

char[] res = new char[str.Length];

for (int i = 0; i < str.Length; i++)

{

if (str[i] < StartLetter || str[i] > StartLetter + Mod)

{

SymbolError = true;

return null;

}

res[i] = (char)(StartLetter + (str[i] - StartLetter) * Key % Mod);

}

return new string(res);

}

public string Decode(string str)//возвращает расшифрованный текст или null при ошибке

{

if (CheckBadKey()) return null;

char[] res = new char[str.Length];

for (int i = 0; i < str.Length; i++)

{

if (str[i] < StartLetter || str[i] > StartLetter + Mod)

{

SymbolError = true;

return null;

}

int j = 0;

while (((str[i] - StartLetter) + Mod * j++) % Key != 0);

res[i] = (char)(((str[i] - StartLetter) + Mod * (j - 1)) / Key + StartLetter);

}

return new string(res);

}

public char GetErrorLetter()//возвращает символ, на котором шифр повторится или 0, если ключ подходит

{

if (CheckBadKey()) return (char)(StartLetter + Mod / NodMK);

else return (char)0;

}

private uint NOD(uint a, uint b)

{

uint t = a % b;

if (t != 0) t = NOD(b, t);

else return b;

return t;

}

}

}

Контрольный пример:

рррррррр

Выводы

Изучили способы шифрования информации в криптографических системах, основанных на методе подстановки. Разработали программу шифровки \ расшифровки информации, основанной на методе подстановки

Список использованной литературы

1. Харин Ю.С. "Математические основы криптологии". Мн, 2010.

2. Шеннон "Работа по теории информации и кибернетики"

Размещено на Allbest.ru

...

Подобные документы

  • Разработка криптографического алгоритма программы ручного шифра по таблице Виженера. Разработка программы, выполняющей шифрование и расшифрование. Особенности использования в качестве ключа самого открытого текста. Алгоритмы решения "обратных" задач.

    курсовая работа [45,0 K], добавлен 13.11.2009

  • Разработка алгоритмов на персональном компьютере, среда Турбо Паскаль. Работа программы для шифровки и дешифровки текста. Алгоритм шифрования: с помощью команды ORD. Функция Password а преобразовании символа, введенного пользователем ключа в его числовой

    курсовая работа [19,6 K], добавлен 17.10.2008

  • История появления и развития шифрования текста. Проблема шифрования и дешифрования текстовых сообщений в современности. Создание программы для зашифровки и расшифровки вводимого текста пятью методами: Атбаш, Цезаря, Полибия, Гронсфельда и Винжера.

    курсовая работа [923,6 K], добавлен 26.12.2011

  • Симметричные и асиметричные методы шифрования. Шифрование с помощью датчика псевдослучайных чисел. Алгоритм шифрования DES. Российский стандарт цифровой подписи. Описание шифрования исходного сообщения асимметричным методом с открытым ключом RSA.

    курсовая работа [101,1 K], добавлен 09.03.2009

  • Создание приложения для шифрования–дешифрования текста тремя алгоритмами (алгоритм "Цезаря","Модифицированного Цезаря", "Скитала"). Исходный текст компонента. Инструкция пользователя, возможность просмотра примерного алгоритма. Исходный текст программы.

    курсовая работа [2,8 M], добавлен 27.02.2015

  • Перевод - процесс создания на основе исходного текста на одном языке равноценного ему в коммуникативном отношении текста на другом языке, требования к обеспечению его эквивалентности. Машинные технологии перевода; характеристика систем Translation Memory.

    презентация [347,8 K], добавлен 06.01.2014

  • Изучение определения, описания и вызова функций, указателей и ссылок на них. Написание функции умножения произвольного столбца двумерного массива на const. Умножение 2 столбцов массива на константы. Составление блок-схемы алгоритма и текста программы.

    лабораторная работа [182,3 K], добавлен 09.01.2012

  • Кодирование информации в двоичном коде. Разработка приложения, реализующего следующее преобразование текста: каждая буква исходного текста заменяется третьей после нее буквой в алфавите, который считается написанным по кругу. Алгоритм работы программы.

    курсовая работа [1,2 M], добавлен 20.12.2015

  • Схема работы и требования к программам шифрования и дешифрования. Алгоритмы и тексты программы шифрования и программы дешифрования, выполненные на языке программирования C/C++. Содержание файла с исходным текстом, с шифротекстом, с дешифрованным текстом.

    курсовая работа [24,7 K], добавлен 20.10.2014

  • Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.

    лабораторная работа [124,7 K], добавлен 09.01.2012

  • Перевод исходного текста и первого подключа в двоичную последовательность. Логическое сложение с исключением. Открытый и закрытый ключи в алгоритме шифрования RSA. Шифрование и расшифрование. Электронная цифровая подпись. Применение функции хеширования.

    контрольная работа [21,9 K], добавлен 28.03.2012

  • Разработка системы автоматического конвертирования исходного текста программ для станков с ЧПУ. Обоснование целесообразности создания такой системы. Критерии экономической эффективности ее функционирования. Оценка безопасности и экологичности проекта.

    дипломная работа [2,1 M], добавлен 23.06.2008

  • Изучение классических криптографических алгоритмов моноалфавитной подстановки и перестановки для защиты текстовой информации. Анализ частоты встречаемости символов в тексте для криптоанализа классических шифров. Сущность одноалфавитного метода шифрования.

    лабораторная работа [2,8 M], добавлен 25.03.2015

  • Возможности создания и обработки графики. Алгоритм шифрования текста в графику. Изменения цветовых каналов. Инициализация объектов html-сущностей. Формирование декодированной строки. Инструменты для обработки массивов, текстовых данных и графики.

    курсовая работа [50,5 K], добавлен 26.11.2013

  • Криптографические методы обеспечения конфиденциальности, невозможности прочтения информации посторонним. Современные методы шифрования информации как обратимого преобразования открытого текста в шифрованный на основе секретного алгоритма или ключа.

    презентация [514,3 K], добавлен 06.02.2016

  • Методика и технологический прием структурного программирования; построение алгоритма программы логической задачи в виде блок-схемы из структур "следование, ветвление, цикл"; кодирование текста программы, языки структурного программирования Паскаль и Си.

    реферат [623,5 K], добавлен 25.03.2012

  • Разработка программы, реализующей процедуры шифрования и расшифрования текста по стандарту DES (Data Encryption Standard). Структура алгоритма шифрования, схема выработки ключевых элементов. Использование криптографического программного средства.

    курсовая работа [1,7 M], добавлен 15.06.2013

  • Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.

    курсовая работа [63,7 K], добавлен 12.12.2010

  • Технология программирования задач для операторных и функциональных языков программирования, разработка алгоритма и отладка программы. Трансляция исходного текста, компоновка программы, ее выполнение с целью определения логических ошибок и тестирование.

    курсовая работа [336,6 K], добавлен 24.04.2010

  • Технические и пользовательские характеристики игры, требования к программному обеспечению и среде разработки C#. Составление блок-схемы алгоритма, uml-диаграммы и текста программы, тестирование корректности компьютерного кода и результатов его работы.

    курсовая работа [1,8 M], добавлен 05.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.