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

Электронная цифровая подпись. Асимметричные алгоритмы шифрования. Сценарий распределения открытых ключей, обмен сертификатами. Выбор программных средств. Математическая модель. Скорости Эль-Гамаля для различных длин модулей. Программная реализация.

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

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

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

function iHash(tmp:string):string;

var

i,j,k:integer;

hash:hash_type;

tres,s:string;

begin

s:=ch8to64b(tmp);

i:=1;j:=1;k:=1;

while k<=length(s) do

begin

hash[i,j]:=StrToInt(s[k]);

inc(j);

inc(k);

if j>16 then

begin

inc(i);

j:=1;

end;

end;

tres:='';

for j:=1 to 16 do

tres:=tres+IntToStr(hash[1,j] xor

hash[2,j] xor hash[3,j] xor

hash[4,j]);

iHash:=Bin16ToStr(tres);

end;

//хешируем н-ое количество символов

function xHash(inp: string):string;

var

tmp,res,inp2:string;

i:integer;

begin

inp2:=inp;

while (length(inp) mod 8 <>0) do

begin

inp:=inp+'а';

end;

tmp:='';

res:='';

for i:=1 to length(inp) do

begin

tmp:=tmp+inp[i];

if (i mod 8 = 0) then

begin

res:= res+iHash(tmp);

tmp:='';

end;

end;

xHash:=res;

end;

//Генерация ключей

procedure TForm1.Button1Click(Sender: TObject);

begin

P:=StrToInt(Edit1.Text);

Q:=StrToInt(Edit2.Text);

RSA_keys(P,Q,N,fn,Ka,Kb); //вызываем процедуру генерирования ключей

Edit3.Text:=IntToStr(N);

Edit4.Text:=IntToStr(fn);

Edit5.Text:=IntToStr(Ka);

Edit6.Text:=IntToStr(Kb);

end;

procedure TForm1.Button2Click(Sender: TObject);

var

input,shifr:string;

begin

if (Edit6.Text='')

then

ShowMessage('Сгенерируйте сначала ключи')

else

begin

input:= Edit7.Text;

//шифруем сообщение методом алгоритмом RSA

shifr:=shifrD(Ka,N,input);

Edit8.Text:=shifr;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);

var shifr,openText:string;

begin

shifr:= Edit8.Text;

//расшифр. сообщение, зашифрованное алгоритмом ELGAMAL

openText:=shifrD(Kb,N,shifr);

Edit9.Text:=openText;

end;

//проверяем цифровую подпись

procedure TForm1.Button5Click(Sender: TObject);

var res1,res2:string;

begin

//хешируем сообщение

res1:=xHash(Edit1x.Text);

Edit12.Text:=res1;

//расшифровуем текст после хеширования

res2:=shifr_hash(Edit11.Text,Ka,n);

Edit13.Text:=res2;

if res2=res1

then Label1.Caption:='Сообщение подлинно'

else Label1.Caption:='Сообщение было изменено';

end;

//процедура подключения к серверу

procedure ConnectToServer;

begin

//читаем номер порта из поля LEdit1

form1.ClientSocket1.Port:=StrToInt(form1.LEdit1.Text);

//читаем имя хоста из поля LEdit2

form1.ClientSocket1.Host:=form1.LEdit2.Text;

//активируем соединение с сервером

form1.ClientSocket1.Active:=true;

form1.Button6.Enabled:=false;

form1.Button7.Enabled:=true;

form1.Button8.Enabled:=true;

end;

//процедура отключения от сервера

procedure DisconFromServer;

begin

//деактивируем соединение с сервером

Form1.ClientSocket1.Active:=false;

Form1.Button7.Enabled:=false;

Form1.Button6.Enabled:=true;

Form1.Button8.Enabled:=false;

end;

//отсоединяемся от сервера

procedure TForm1.Button7Click(Sender: TObject);

begin

DisconFromServer;

end;

//отправка сообщения

procedure TForm1.Button8Click(Sender: TObject);

var

hashOut,SendText,x,UsrNm:string;

begin

UsrNm:=LEdit5.Text;

if ((cb1.ItemIndex<>1) and (Edit6.Text=''))

then ShowMessage('Сгенерируйте сначала ключи')

else

begin

if cb1.ItemIndex=0

then

begin

//шифруем сообщение методом ELGAMAL и отправляем на сервер

SendText:=shifrD(Ka,N,LEdit3.Text);

ClientSocket1.Socket.SendText('-mRS'+'~'+UsrNm+'~'+SendText+'~'+ IntToStr(Kb)+'~'+IntToStr(N));

end

else

if cb1.ItemIndex=1

then

begin

SendText:=LEdit3.Text;

//отправляем сообщение на сервер без шифроваеия и подписи

ClientSocket1.Socket.SendText('-msg' +'~'+UsrNm+'~'+SendText);

end

else

begin

//подписываем сообщение и отправляем на сервер

hashOut:=xHash(Ledit3.Text);

SendText:=shifr_hash(hashOut,Kb,n);

ClientSocket1.Socket.SendText('-mSI' +'~'+UsrNm+'~'+LEdit3.Text+'~'+SendText+'~'+IntToStr(Ka)+'~'+IntToStr(N));

end;

end;

end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;

Socket: TCustomWinSocket);

begin

Form1.Enabled:=false;

Form2.Show;

//ShowMessage('Succesful connect to server');

end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;

Socket: TCustomWinSocket);

begin

ShowMessage('Server Disconected');

DisconFromServer;

end;

procedure TForm1.ClientSocket1Error(Sender: TObject;

Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;

var ErrorCode: Integer);

begin

ShowMessage('Server Error');

DisconFromServer;

end;

procedure TForm1.ClientSocket1Read(Sender: TObject;

Socket: TCustomWinSocket);

begin

ChooseCommand(Socket.ReceiveText());

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

ConnectToServer;

end;

//прдписываем сообщение

procedure TForm1.Button11Click(Sender: TObject);

var

x,y:string;

begin

if (Edit6.Text='')

then ShowMessage('Сгенерируйте сначала ключи')

else

begin

label1.Caption:='';

//хешируем сообщение

x:=xHash(Edit1x.Text);

//шифруем сообщение после хеша

y:=shifr_hash(x,Kb,n);

Edit10.Text:=x;

Edit11.Text:=y;

end;

end;

procedure TForm1.Button12Click(Sender: TObject);

var x,y:string;

begin

//хешируем сообщение

x:=iHash(Edit1x.Text);

//расшифровываем сообщение после хеша

y:=shifr_hash(x,Kb,n);

Edit10.Text:=x;

Edit11.Text:=y;

end;

end.

unit Unit2;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm2 = class(TForm)

Edit1: TLabeledEdit;

Edit2: TLabeledEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

Form1.ClientSocket1.Socket.SendText('-ath'+'~'+Edit1.Text+'~'+Edit2.Text);

Form1.Enabled:=true;

Form1.LEdit5.Text:=Form2.Edit1.Text;

Form2.Close;

end;

end.

unit Unit3;

interface

uses

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

Dialogs, StdCtrls, ExtCtrls;

type

TForm3 = class(TForm)

Edit1: TLabeledEdit;

Edit2: TLabeledEdit;

Edit3: TLabeledEdit;

Edit4: TLabeledEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin

Form1.ClientSocket1.Socket.SendText('-reg'+'~'+Edit1.Text+'~'+Edit2.Text+'~'+Edit3.Text+'~'+Edit4.Text);

Form1.Enabled:=true;

Form3.Close;

end;

end.

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


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

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

    реферат [20,6 K], добавлен 09.10.2014

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

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

  • Правовое регулирование отношений в области использования электронной цифровой подписи. Понятие и сущность электронной цифровой подписи как электронного аналога собственноручной подписи, условия ее использования. Признаки и функции электронного документа.

    контрольная работа [34,5 K], добавлен 30.09.2013

  • История криптографии. Сравнение алгоритмов шифрования, применение в операционной системе. Анализ продуктов в области пользовательского шифрования. Включение и отключение шифрования на эллиптических кривых. Использование хеш-функции. Электронная подпись.

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

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

    реферат [27,8 K], добавлен 13.09.2011

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

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

  • Организационно-правовое обеспечение электронной цифровой подписи. Закон "Об электронной цифровой подписи". Функционирование ЭЦП: открытый и закрытый ключи, формирование подписи и отправка сообщения. Проверка (верификация) и сфера применения ЭЦП.

    курсовая работа [22,9 K], добавлен 14.12.2011

  • Назначение и применение электронной цифровой подписи, история ее возникновения и основные признаки. Виды электронных подписей в Российской Федерации. Перечень алгоритмов электронной подписи. Подделка подписей, управление открытыми и закрытыми ключами.

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

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

    презентация [883,5 K], добавлен 18.05.2017

  • Разъяснения по использованию систем цифровой подписи в связи с ведением закона "Об электронной цифровой подписи". Пример практического применения механизма электронно-цифровой подписи: программа контроля подлинности документов, хранимых в базе данных.

    контрольная работа [180,1 K], добавлен 29.11.2009

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