Шифрование и расшифрование по алгоритму RSA

Автор работы: Пользователь скрыл имя, 16 Марта 2012 в 15:32, курсовая работа

Краткое описание

То, что информация имеет ценность, люди осознали очень давно – недаром переписка сильных мира сего издавна была объектом пристального внимания их недругов и друзей. Тогда-то и возникла задача защиты этой переписки от чрезмерно любопытных глаз. Люди пытались использовать для решения этой задачи самые разнообразные методы, и одним из них была тайнопись - умение составлять сообщения таким образом, чтобы его смысл был недоступен никому, кроме посвященных в тайну. Есть свидетельства тому, что искусство тайнописи зародилось еще в доантичные времена.

Содержание работы

Введение
3
1
Теоретическая часть
5
1.1
Что такое шифрование
5
1.2
Основные понятия и определения криптографии
6
1.3
Симметричные и асимметричные криптосистемы
8
1.4
Основные современные методы шифрования
9
1.5
Алгоритм RSA
9
2
Практическая реализация системы шифрования RSA
13
2.1
Постановка задачи
13
2.2
Математическое исследование поставленной задачи
13
2.3
Создание алгоритма решения задачи
17
2.4
Компьютерная реализация
18

Заключение
21

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

Приложение А Код про

Содержимое работы - 1 файл

Курсовая_ИБиЗИ.doc

— 370.50 Кб (Скачать файл)

Но помимо этих возможностей у компонента Image имеются свойства, позволяющие работать с различными типами графических файлов.

Delphi поддерживает три типа файлов - битовые матрицы, пиктограммы и метафайлы. Все три типа файлов хранят изображения; различие заключается лишь в способе их хранения внутри файлов и в средствах доступа к ним. Битовая матрица (файл с расширением.bmp) отображает цвет каждого пикселя в изображении. При этом информация хранится таким образом, что любой компьютер может отобразить изображение с разрешающей способностью и количеством цветов, соответствующими его конфигурации.

Пиктограммы (файлы с расширением.ico) - это маленькие битовые матрицы. Они повсеместно используются для обозначения значков приложений, в быстрых кнопках, в пунктах меню, в различных списках. Способ хранения изображений в пиктограммах схож с хранением информации в битовых матрицах, но имеются и различия. В частности, пиктограмму невозможно масштабировать, она сохраняет тот размер, в котором была создана.

Метафайлы (Metafiles) хранят не последовательность битов, из которых состоит изображение, а информацию о способе создания картинки. Они хранят последовательности команд рисования, которые и могут быть повторены при воссоздании изображения. Это делает такие файлы, как правило, более компактными, чем битовые матрицы.

Компонент Image позволяет отображать информацию, содержащуюся в графических файлах всех указанных типов. Для этого служит его свойство Picture - объект типа TPicture.

Если установить свойство AutoSize в true, то размер компонента Image будет автоматически подгоняться под размер помещенной в него картинки. Если же свойство AutoSize установлено в false, то изображение может не поместиться в компонент или, наоборот, площадь компонента может оказаться много больше площади изображения.

Другое свойство - Stretch позволяет подгонять не компонент под размер рисунка, а рисунок под размер компонента. Устанавливать Stretch в true может иметь смысл только для каких-то узоров, но не для картинок. Свойство Stretch не действует на изображения пиктограмм, которые не могут изменять своих размеров.

Свойство - Center, установленное в true, центрирует изображение на площади Image, если размер компонента больше размера рисунка.

Еще одно свойство - Transparent (прозрачность). Если Transparent равно true, то изображение в Image становится прозрачным. Это можно использовать для наложения изображений друг на друга. Одно из возможных применений этого свойства - наложение на картинку надписей, выполненных в виде битовой матрицы. Эти надписи можно сделать с помощью встроенной в Delphi программы Image Editor.

Label - используется для отображения различных надписей на форме. Тексты, отображаемые в перечисленных компонентах, определяются значением их свойства Caption.  Его можно устанавливать в процессе проектирования или задавать и изменять программно во время выполнения приложения.  Для метки Label цвет и шрифт - единственно доступные элементы оформления надписи. Размер метки Label определяется также свойством AutoSize. Если это свойство установлено в true, то вертикальный и горизонтальный размеры компонента определяются размером надписи. Если же AutoSize равно false, то выравнивание текста внутри компонента определяется свойством Alignment, которое позволяет выравнивать текст по левому краю, правому краю или центру клиентской области метки.

Панели Panel используются наиболее широко. С их помощью компонуются различные элементы интерфейса (кнопки, окна редактирования, списки), функционально связанные друг с другом. Такая функциональная связь должна поддерживаться и зрительной связью - объединением соответствующих элементов в рамках одной панели.

Button - является простейшей и, пожалуй, наиболее часто используемой кнопкой, которая располагается на странице библиотеки Standard.  Основное событие любой кнопки - OnClick, возникающее при щелчке на ней. Именно в обработчике этого события записываются операторы, которые должны выполняться при щелчке пользователя на кнопке. Из методов, присущих кнопкам, имеет смысл отметить один - Click. Выполнение этого метода эквивалентно щелчку на кнопке, т.е. вызывает событие кнопки OnClick. Этим можно воспользоваться, чтобы продублировать какими-то другими действиями пользователя щелчок на кнопке.

В компоненте Edit вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать в процессе проектирования или задавать программно. Выравнивание текста, как это имело место в метках и панелях, невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине в окно, просто сдвигается, и пользователь может перемещаться по нему с помощью курсора. Окна редактирования можно использовать и просто как компоненты отображения текста. Для этого надо установить в true свойство ReadOnly.  При использовании окон редактирования для вывода, ввода и редактирования чисел необходимо использовать функции взаимного преобразования строк и чисел. Для вывода это описанные при рассмотрении меток функции FloatToStr и IntToStr. При вводе это функции StrToFloat - преобразование строки в значение с плавающей запятой, и StrToInt - преобразование строки в целое значение. Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена. В противном случае значение MaxLength указывает максимальное число символов, которое может ввести пользователь.

Ниже приведено рабочее окно программы, реализующей алгоритм шифрования данных RSA.

 

 

Рисунок 1 – Программная реализация на языке программирования Delphi алгоритма RSA

 

 

 

 

Заключение

 

 

В данной курсовой работе был реализован алгоритм шифрования данных RSA.

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

Компьютерная реализация алгоритма разработана в среде программирования Delph. Дополнительно в ходе выполнения работы были закреплены знания в области программирования в среде Delphi 7.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

1 Анин Б. Защита компьютерной информации. – СПб. : БХВ – Санкт – Петербург,   2000. – 368 с.

2 Артюнов В. В. Защита информации: учеб. – метод. пособие. М. : Либерия – Бибинформ,   2008. – 55 с. – (Библиотекарь и время. 21 век; вып. №99 )

3 Куприянов А. И. Основы защиты информации: учеб. пособие. – 2-е изд. стер. – М. : Академия, 2007. – 254 с. – (Высшее профессиональное образование) 

4 Семененко В. А., Н. В. Федоров Программно – аппаратная защита информации: учеб. пособие для студ. вузов. – М. :  МГИУ, 2007. – 340 с.

5 Цирлов В. Л. Основы информационной безопасности: краткий курс. – Ростов н/Д:  Феникс, 2008. – 254 с. (Профессиональное образование)

6 Архангельский А. Я. Программирование в Delphi 5. - М. : ЗАО “Издательство БИНОМ”, 2000. - 1070 с. : ил.

7 Фаронов В. В. Delphi 6. Учебный курс. - М. :  Издатель Молгачева С. В., 2002. - 672 с.

7 Фаронов В. В. Delphi 5 Учебный курс. - М. : «Нолидж», 2000. - 606 с.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение А

(обязательное)

Код программы

 

 

unit Unit16;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ExtCtrls;

 

type

 

  TIncodeMes = array of Integer;

 

  TForm16 = class(TForm)

    Memo1: TMemo;

    Memo2: TMemo;

    Button1: TButton;

    Memo3: TMemo;

    Button2: TButton;

    GroupBox1: TGroupBox;

    Label1: TLabel;

    Edit1: TEdit;

    Edit2: TEdit;

    Edit3: TEdit;

    Image1: TImage;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  private

    FMes: TIncodeMes;

  public

    { Public declarations }

  end;

 

var

  Form16: TForm16;

 

implementation

uses math;

 

{$R *.dfm}

 

//Значение бита в двойном слове (32бита)

function Bit(Value, n: Integer): Boolean;

asm

   bt eax, edx

   setc al

   and eax, 0FFh

end;

 

//Функция быcтрого возведения в степень

function FastPower(a, b, n: integer): integer;

var i: integer;

    ai: extended;

begin

  ai := a;

  for I := Trunc(log2(b)) - 1 downto 0 do

  if Bit(b, i) then ai := Round(sqr(ai) * a) mod n else ai := Round(sqr(ai)) mod n;

  result := Round(ai);

end;

 

function Encrypt(s: string; e, n: integer): TIncodeMes;

  var I: Integer;

begin

  SetLength(result, length(s));

  for I := 0 to Length(s) - 1 do

    result[i] := FastPower(ord(s[i + 1]), e, n)

end;

 

function Decrypt(s: array of integer; e, n: integer): string;

  var i: Integer;

begin

  SetLength(Result, Length(s));

  for I := 0 to Length(s) - 1 do

    result[i + 1] := chr(FastPower(s[i], e, n))

end;

 

//Шифрование текста в Memo

procedure TForm16.Button1Click(Sender: TObject);

  var i, n, e: Integer;

begin

  n := StrToIntDef(Edit3.Text, 697);

  e := StrToIntDef(Edit2.Text, 7);

  FMes := Encrypt(Memo1.Lines.Text, e, n);

  for i := 0 to High(FMes) do Memo2.Lines.Append(IntToStr(FMes[i]));

end;

 

//Дешифровка сообщения

procedure TForm16.Button2Click(Sender: TObject);

  var i, n, d: integer;

      s : string;

begin

  d := StrToIntDef(Edit1.Text, 183);

  n := StrToIntDef(Edit3.Text, 697);

  s := Decrypt(FMes,d , n);

  Memo3.Lines.Add(s)

end;

 

end.

23

 



Информация о работе Шифрование и расшифрование по алгоритму RSA