Висновки. Створено БД в Microsoft Access 2003, форми, таблиці, вибірки.

ОПАНОВАНО ПРАКТИЧНІ НАВИЧКИ:

Створено БД в Microsoft Access 2003, форми, таблиці, вибірки.

ОСВОЄНО ТЕОРЕТИЧНІ ПОНЯТТЯ ТА ТЕРМІНИ:

§ Закон України «Про iнформацiю»;

§ IнформацiйнІ відносин;

§ ОсновнІ видИ інформації;

§ Доступ до вiдкритої iнформацiї ;

§ Iнформацiя з обмеженим доступом ;

§ Конфiденцiальна інформація;

§ таємнА iнформацiЯ;

§ державна таємниця;

§ гриф секретності;

§ державний експерт з питань таємниць;

§ допуск до державної таємниці;

§ доступ до державної таємниці;

§ засекречування матеріальних носіїв інформації;

§ Звід відомостей, що становлять державну таємницю;

§ категорія режиму секретності;

§ криптографічний захист секретної інформації.


Міністерство освіти і науки України

Кропивницький національний технічний університет

Кафедра програмування та захисту інформації

Лабораторна робота №2

Дисципліна „ОСНОВИ ЗАХИСТУ ІНФОРМАЦІЇ ”

Виконав:

Ст. гр. КІ-16-С

Резенко Марк Станіславович

Дата: 22.09.2016

Підпис:________________

Перевірила:

Асистент Лисенко І.А.

Дата: ­­______________

Підпис: ______________

Кропивницький – 2016 р.

Завдання:Реалізувати алгоритм DES. Зашифрувати та розшифрувати файл

Реалізую алгоритм за допомогою методу «Цезаря»

programzezar2016;

functioncode(toCode:string):string;

varx,y,n:integer;

Begin

writeln('крок коду');

readln(n);

forx:=1 tolength(toCode) do begin

y:=(Ord(toCode[x])+n);

toCode[x]:=Chr(y);

end;

code:=toCode;

end;

functiondecode(toCode:string):string;

varx,y,n:integer;

Begin

writeln('підтвердіть крок коду');

readln(n);

forx:=1 tolength(toCode) do begin

y:=(Ord(toCode[x])-n);

toCode[x]:=Chr(y);

end;

decode:=toCode;

end;

Var

s:string[200];

Begin

writeln('Текст');

readln(s);

s:=(code(s));

writeln(s);

writeln(decode(s));

readln

end.

Вводимо значення рисунок 2.

РИСУНОК 2 – ВВЕДЕННЯ ЗНАЧЕННЯ

Далі крок, нехай оберемо 2 отримуємо закодований текст рисунок 2.1

РИСУНОК 2.1 – ЗАКОДОВАНИЙ ТЕКСТ

І знов декодуємо файл за умовою задачі, отримуємо початкові дані рисунок 2.2.

РИСУНОК 2.2 – ПРОЦЕС ДЕКОДУВАННЯ

Реалізую другий алгоритм за допомогою ключа та матриці, з наведеного прикладу до л\р 2 та алгоритму «ЕВкЛіДА»

Type

very_long = longint;

{ Тип матриці - ключа }

tkey = array[1 .. 2, 1 .. 2] ofinteger;

{ Матриця - стовпчик }

tcolumn = array[1 .. 2] ofinteger;

pmatrix = ^matrix;



matrix = array[1 .. maxint div sizeof(tcolumn)] oftcolumn;

function_inc(varx: integer): integer;

Begin

inc(x);

_inc := x;

end;

{

Реалізація розширеного алгоритму Евкліда

(Використовується для знаходження числа, зворотного даному за модулем при обчисленні визначника матриці)}

procedureextended_euclid(a, b: very_long;

varx, y, d: very_long);

varq, r, x1, x2, y1, y2: very_long;

Begin

ifb = 0 then begin

d := a; x := 1; y := 0;

Exit

end;

x2 := 1; x1 := 0; y2 := 0; y1 := 1;

whileb > 0 do begin

q := a divb; r := a - q * b;

x := x2 - q * x1; y := y2 - q * y1;

a := b; b := r;

x2 := x1; x1 := x; y2 := y1; y1 := y;

end;

d := a; x := x2; y := y2;

end;

(* Обчислення числа, зворотного A по модулю N *)

functioninverse(a, n: very_long): very_long;

vard, x, y: very_long;

Begin

extended_euclid(a, n, x, y, d);

ifd = 1 theninverse := x

elseinverse := 0;

end;

{Алфавіт криптосистеми}

Const

alpha: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

{Перетворення масиву стовпців довжини Count в рядок символів}

functionmake_str(constarr: array oftcolumn;

constcount: integer): string;

Var

res: string;

i, j: integer;

Begin

res := '';

fori := 0 topred(count) do

forj := 1 to2 dores := res + alpha[succ(arr[i][j])];

make_str := res;

end;

{Перетворення рядка символів S в масив стовпців (повертається довжина масиву)}

functionmake_columns(vararr: array oftcolumn;

consts: string): integer;

Var

i, count: integer;

col: tcolumn;

Begin

count := -1;

fori := 1 tolength(s) do begin

col[2 - (i mod2)] := pred(pos(s[i], alpha));

if notodd(i) then

arr[_inc(count)] := col;

end;

make_columns := count + 1;

end;

{Функція шифрування повідомлення З ключем К}

functionEncodeHill(constk: Tkey; consts: string): string;

Var

i, j, count: integer;

mx, Y: pmatrix;

len: integer;

Begin

len := sizeof(tcolumn) * ( (length(s) div2) + byte(odd(length(s))) );



getmem(mx, len);

getmem( Y, len);

count := make_columns(mx^, s);

fori := 1 tocount do

forj := 1 to2 do

Y^[i][j] := (K[j, 1] * mx^[i][1] + K[j, 2] * mx^[i][2]) modlength(alpha);

EncodeHill := make_str(Y^, count);

freemem( Y, len);

freemem(mx, len);

end;

{Функція розшифровки шифротексту З відомим ключем К}

functionDecodeHill(constk: Tkey; consts: string): string;

functionpositive(X: integer): integer;

Begin

Repeat

inc(X, length(alpha));

untilX >= 0;

positive := X;

end;

Var

inv_k: Tkey;

det, i, j, count: integer;

mx, Y: pmatrix;

len: integer;

Begin

det := k[1, 1] * k[2, 2] - k[1, 2] * k[2, 1];

ifdet < 0 thendet := positive(det);

det := inverse(det, length(alpha));

fori := 1 to2 do

forj := 1 to2 do begin

ifi = j then

inv_k[i, j] := det * k[3 - i, 3 - j]

Else

inv_k[i, j] := - det * k[i, j];

ifinv_k[i, j] < 0 then

inv_k[i, j] := positive(inv_k[i, j])

elseinv_k[i, j] := inv_k[i, j] mod26;

end;

len := sizeof(tcolumn) * ( (length(s) div2) + byte(odd(length(s))) );

getmem(mx, len);

getmem( Y, len);

count := make_columns(Y^, s);

fori := 1 tocount do

forj := 1 to2 do

mx^[i][j] := (inv_k[j, 1] * Y^[i][1] + inv_k[j, 2] * Y^[i][2]) modlength(alpha);

DecodeHill := make_str(mx^, count);

freemem( Y, len);

freemem(mx, len);

end;

{Тестуємо роботу функцій кодування / декодування}

Const

k_2: Tkey = ((1, 7), (3, 6));

Begin

writeln('encoding:');

writeln(EncodeHill(k_2, 'AFINEAFTERNOON'));

writeln('decoding:');

{Декодуємо результат роботи попередньої функції з тим же ключем} writeln(DecodeHill(k_2, 'JEVYEMIZTKHTBQ'));

end.

Дам пояснення що створеній програмі простір вихідних повідомлень і криптотекст збігаються: латинський алфавіт. Редагуємо букви в порядку їх слідування в алфавіті: A отримує номер 0, B - номер 1, ... і Z - номер 25, остання буква англійського алфавіту.

Всі арифметичні операції виконуються за модулем 26 (довжина алфавіту), тобто 26 ототожнюється з 0, 27 - з одиницею і т.д.

Виберемо ціле число D <= 2. Воно вказує розмірність використовуваних матриць. У процедурі шифрування набори з D букв шифруються разом. Візьмемо D = 2. Нехай ключ M - квадратна матриця порядку D, елементами якої є числа 0 .. 25. Ця матриця повинна задовольняти вимогу не відроджуваності, тобто для неї повинна існувати матриця M-1,

Шифрування здійснюється за допомогою рівняння

MP = C, Де P і C - вектор стовпчики довжиною D. Тобто, кожен набір з D букв вихідного повідомлення визначає вектор P, компонентами якого є номери букв. У свою чергу, отриманий вектор C також інтерпретується як набір з D букв.

Для дешифрування повідомлення використовуємо матрицю M-1 [mod 26] і для шифрування тексту C обчислюємо

P = M-1 * C [mod 26].


4791428933805819.html
4791522524677873.html
    PR.RU™