51305

Научиться составлять программы шифрования текста, основываясь на принципе взбивания

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

Информатика, кибернетика и программирование

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

Русский

2014-02-09

418 KB

4 чел.

Цель работы: Научиться составлять программы шифрования текста, основываясь на принципе взбивания.

Ход работы

  1.  Ознакомиться с теоретической частью данной работы.
  2.  Составить алгоритм программы шифрования по принципу взбивания.
  3.  Составить программу шифрования по соответствующему заданию.
  4.  Составить алгоритм программы дешифрования по принципу взбивания.
  5.  Составить программу дешифрования по соответствующему заданию.
  6.  Составить отчет по проделанной работе.
  7.  Защитить работу.

Скриншот программы

Листинг программы

unit Unit1;

interface

uses

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

 Dialogs, StdCtrls, Buttons,Math;

type

 TForm1 = class(TForm)

   Memo1: TMemo;

   Label2: TLabel;

   Memo3: TMemo;

   Label4: TLabel;

   BitBtn2: TBitBtn;

   BitBtn1: TBitBtn;

   function cript(x:string):string;

   function Uncript(x:string):string;

   procedure BitBtn1Click(Sender: TObject);

   procedure BitBtn2Click(Sender: TObject);

   procedure FormCreate(Sender: TObject);

     //замена по блокам по правилу

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

 i,j:integer;

implementation

{$R *.dfm}

//Шифр Des  

function TForm1.cript(x: string): string;

 const

xorblok:array[0..1] of char=('0','1');

boolblok:array[0..1] of boolean=(false,true);

 var

stroka,resul:string;

//===========================================================================

//Функция возвращает код символа в двоичном формате

//===========================================================================

function Bin(x1: Integer): string;

const t:array[0..1] of char = ('0','1');

var res:string;

d:0..1;

begin

res:='';

while (x1<>0) do

begin

d:=x1 mod 2 ;

res:=t[d]+res;

x1:=x1 div 2 ;

end;

while length(res)<>8 do

res:='0'+res;

Bin:=res;

end;

//===========================================================================

//Функция возврата символа по двоичному коду

//===========================================================================

Function unbin(y1:string):string;

var resul,i1:integer;

mess:string;

begin

resul:=0;

i:=1;

i1:=1;

while i<length(y1)+1 do

begin

if y1[i]='1' then

resul:=resul+floor(power(2,8-i1));

if i1=8 then

begin

mess:=mess+chr(resul);

resul:=0;

i1:=0;

end;

i:=i+1;

i1:=i1+1;

end;

unbin:=mess;

end;

//===========================================================================

//Функция Шифр-замена(Цезарь)

//===========================================================================

Function cezarcript(messag:string):string;

Var

i1:integer;

begin

i1:=1;

while i1<>length(messag)+1 do

begin

if ord(messag[i1])-3<0 then

messag[i1]:=chr(ord(messag[i1])-3+255)

else

messag[i1]:=chr(ord(messag[i1])-3);

i1:=i1+1;

end;

cezarcript:=messag;

end;

//Конец шифра Цезаря

//===========================================================================

//Шифр перестановки(Обратное написание)

//===========================================================================

function reverscript(messag:string):string;

var i1:integer;

mess:string;

begin

i1:=1;

while i1<length(messag)+1 do

begin

mess:=messag[i1]+mess;

inc(i1);

end;

reverscript:=mess;

end;

//===========================================================================

//Процедура шифрование

//===========================================================================

begin

//===========================================================================

// производит взбитие символов

//===========================================================================

 //добавление до 8 символов

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

begin

 x:=x+' ';

end;

 //перевод сообщения в 2 систему вызывая процедуру

stroka:='';

for i:=1 to length(x) do

stroka:=stroka+bin(Ord(x[i]));

x:=stroka;

stroka:='';

//запись в строку вторую половину текста

i:=0;

i:=(length(x) div 2)+1;

while i<>length(x)+1 do

begin

stroka:=stroka+x[i];

 i:=i+1;

end;

//запись в строку первую xor вторую

i:=1;

j:=length(x) div 2+1;

while i<>(length(x) div 2)+1 do

begin

 if  boolblok[strtoint(x[i])] xor  boolblok[strtoint(x[j])] then

 stroka:=stroka+'1' else

 stroka:=stroka+'0';

 i:=i+1;

 j:=j+1;

end;

stroka:=unbin(stroka);

//Конёц взбитию

//===========================================================================

//Шифр цезаря + Шифр перестановки(Обратное написание)

//===========================================================================

stroka:=CezarCript(stroka);

stroka:=Reverscript(stroka);

//===========================================================================

cript:=stroka;

//Конец шифрованию

//===========================================================================

end;

//расшифровка шифра DES  

function TForm1.Uncript(x:string): string;

 const

xorblok:array[0..1] of char=('0','1');

boolblok:array[0..1] of boolean=(false,true);

 var

Messagecount:integer;

stroka,strokaresul:string;

//===========================================================================

//Функция Расшифровки-замена(Цезарь)

//===========================================================================

Function cezaruncript(messag:string):string;

Var

i1:integer;

stet:string;

begin

i1:=1;

while i1<>length(messag)+1 do

begin

if (ord(messag[i1])+3)<=255 then

begin

stet:=stet+chr(ord(messag[i1])+3);

end

else

begin

stet:=stet+chr(ord(messag[i1])+3-255);

end;

inc(i1);

end;

cezaruncript:=stet;

end;

//Конец расщифровки Цезаря

//===========================================================================

//Расшифровка перестановки(Обратное написание)

//===========================================================================

function reversuncript(messag:string):string;

var i1:integer;

mess:string;

begin

i1:=1;

while i1<length(messag)+1 do

begin

mess:=messag[i1]+mess;

inc(i1);

end;

reversuncript:=mess;

end;

//Конец Шифр перестановки(Обратное написание)

//===========================================================================

//===========================================================================

//Функция возвращает код символа в двоичном формате

//===========================================================================

function Bin(x1: Integer): string;

const t:array[0..1] of char = ('0','1');

var res:string;

d:0..1;

begin

res:='';

while (x1<>0) do

begin

d:=x1 mod 2 ;

res:=t[d]+res;

x1:=x1 div 2 ;

end;

while length(res)<>8 do

res:='0'+res;

Bin:=res;

end;

//===========================================================================

//Функция возврата символа по двоичному коду

//===========================================================================

Function unbin(y1:string):string;

var resul,i1:integer;

mess:string;

begin

resul:=0;

i:=1;

i1:=1;

while i<length(y1)+1 do

begin

if y1[i]='1' then

resul:=resul+floor(power(2,8-i1));

if i1=8 then

begin

mess:=mess+chr(resul);

resul:=0;

i1:=0;

end;

i:=i+1;

i1:=i1+1;

end;

unbin:=mess;

end;

//===========================================================================

begin

//===========================================================================

//первичная расшифровка перестановки и замены

//===========================================================================

x:=reversuncript(x);

x:=cezaruncript(x);

//===========================================================================

//Перевод в двоичный код

stroka:='';

for i:=1 to length(x) do

begin

stroka:=stroka+bin(Ord(x[i]));

end;

x:= stroka;

//Проведём операцию xor

stroka:='';

i:=1;

j:=length(x) div 2+1;

while i<>(length(x) div 2)+1 do

begin

 if  boolblok[strtoint(x[i])] xor  boolblok[strtoint(x[j])] then

 stroka:=stroka+'1' else

 stroka:=stroka+'0';

 i:=i+1;

 j:=j+1;

end;

strokaresul:=unbin(stroka);

//запись в строку вторую половину текста

stroka:='';

i:=1;

while i<>(length(x) div 2)+1 do

begin

stroka:=stroka+x[i];

i:=i+1;

end;

strokaresul:=strokaresul+unbin(stroka);

uncript:=strokaresul;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

memo1.Text:=uncript(memo3.Text);

end;

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

memo3.Text:=cript(memo1.text);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

memo1.Text:='передача';

end;

end.


Изм.

Лист

№ докум.

Подпись

Дата

Лист

1

абораторная работа №5

Разраб.

Карецкий

Провер.

Смулаковский

Реценз.

Н. Контр.

Утверд.

Комбинированные шифры и стандарт DES (Data Encryption Standart)

Лит.

Листов

6

       КОГУ 59 П-3

2

Изм

Лист

№ докум.

Подп

Дата

Лист

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

3

Изм

Лист

№ докум.

Подп

Дата

Лист

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

4

Изм

Лист

№ докум.

Подп

Дата

Лист

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

5

Изм

Лист

№ докум.

Подп

Дата

Лист

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

6

Изм

Лист

№ докум.

Подп

Дата

Лист

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

7

Изм

Лист

№ докум.

Подп

Дата

Лист

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


 

А также другие работы, которые могут Вас заинтересовать

33056. Питання про пізнаванність обєктивного світу 15.19 KB
  Наука яка вивчає сутність знання закономірності його функціонування і розвитку називаєтьсятеорією пізнання або гносеологією. Основною проблемою гносеології є проблема відносин обєкта пізнання навколишнього світу і субєкта пізнавальної діяльності людини. Вперше в історії філософії саме у Демокріта зявляється розгорнута теорія пізнання заснована на розумінні чуттєвого і розумового. Важливий крок у розвитку теорії пізнання було зроблено європейською філософією XVII XVIII ст.
33057. Практика пізнання 13.32 KB
  Практика це матеріальна чуттєвопредметна цілепокладаюча діяльність людини що має своїм змістом засвоєння і перетворення природних і соціальних об'єктів і становить загальну основу рушійну силу розвитку людського суспільства і пізнання. Структура практикимістить у собі такі моменти якпотреба мета мотив доцільна діяльність у вигляді її окремих актів предмет до якого спрямована діяльність засоби за допомогою яких досягається мета і нарешті результатдіяльності. ♦ Основним і вихідним видом суспільної практики є насамперед...
33058. Процес абстрактного, логічного мислення 14.88 KB
  Процес пізнання завжди починається з безпосереднього живого споглядання тобто з безпосередньої взаємодії людини в практичній діяльності з предметами і явищами. Основні формичуттєвого пізнання: ♦ відчуття; ♦ сприймання; ♦ уявлення. Першою і початковою формою і джерелом чуттєвого пізнання є відчуття. Тому сприймання це така форма чуттєвого пізнання коли у свідомості людини відбувається цілісне відображення зовнішнього матеріального предмета з усією сукупністю його властивостей якостей сторін які відображені у відчуттях.
33059. Поняття світогляду, його специфіка, структура, функції 13.72 KB
  Поняття світогляду його специфіка структура функції Отже світогляд це сукупність поглядів оцінок принципів що визначають найзагальніше усвідомлення розуміння світу місця в ньому людини а також ціннісні орієнтації людей їх життєві позиції. Світогляд як складне духовне явище поєднує в собі переконання ідеали цілі мотиви поведінки інтереси ціннісні орієнтації принципи пізнання моральні норми естетичні погляди тощо. Структура світогляду залежить від певних чинників. Залежно від співвідношення інтелектуального та емоційного...
33060. Предмет і специфіку філософії 13.27 KB
  Методологічна функція полягає в тому що філософія виступає як загальне вчення про метод і як сукупність найбільш загальних методів пізнання і освоєння дійсності людиною. Прогностична функція філософії формулювання в її рамках гіпотез про загальні тенденції розвитку матерії і свідомості людини і світу. Критична функція філософії.
33061. Зародження філософії 15.38 KB
  Зародження філософії історично співпадає з виникненням зачатків наукового знання з появою громадської потреби в цілісному переконанні на світ і людину у вивченні загальних принципів буття і пізнання. онтос буття суще вчення про буття чи про першооснови усього сущого : проблема буття розуміється тут в універсальному всеосяжному сенсі чому є щось а не ніщо одне з перших філософських питань аналізуються буття сам принцип існування небуття чи можливе неіснування ніщо буття матеріальне природа і ідеальне ідея думка...
33062. Співвідношення філософії та науки 15.18 KB
  Порівняння пізнавальних можливостей філософії і конкретних наук зясування місця філософії в систему людських знань має давні традиції в європейській культурі. Ще в античності Платон і Арістотель намагалися розмежувати особливості науки і філософії. При цьому теоретична міць філософії прагнення логічно обгрунтувати знання висловити його в теоретичній формі виявлялася несумірної з можливостями конкретних наук що давало підстави протягом довгих століть від Аристотеля до Гегеля вважати філософію наукою наук .
33063. Джерела, провідні ідеї та напрями філософії Стародавньої Індії 59.26 KB
  Джерела провідні ідеї та напрями філософії Стародавньої Індії Зародки філософського мислення Індії сягають у глибоку давнину середина І тис. Канонічним духовним джерелом Стародавньої Індії є Веди із їх назвою споріднено наше слово відати знати записані на листях пальми приблизно за 1. Таким чином вже у найдавніших духовних джерелах Стародавньої Індії йдеться про фундаментальні моральні ідеї про певне осмислення становища людини у світі про різні шляхи звільнення від кармінних законів долі найкращим з яких є шлях дійового...