Axborotni himoyalashning kriptografik usullari fanidan 1 amaliy mashg‘uloti Affin Sezar shifrlash algoritmi va uning dasturi Affin kriptotizimlari


Download 274.84 Kb.
bet1/4
Sana12.03.2023
Hajmi274.84 Kb.
#1263948
  1   2   3   4
Bog'liq
Narimonoov 1 amaliy topshiriq


130 20 guruh talabasi Narimonov Shahbozning AXBOROTNI HIMOYALASHNING KRIPTOGRAFIK USULLARI fanidan
1 amaliy mashg‘uloti
Affin Sezar shifrlash algoritmi va uning dasturi
Affin kriptotizimlari. Affin kripototizimlari keng tarqalmagan o‘rniga qo‘yish usullari sanalib, bir alfavitli shifrlash usullariga kiradi. Bu tizimlarga affin tizimidagi Sezar usuli, ROT13 va Atbash usullari kiradi.
Affin tizimidagi Sezar usulida har bir harfga almashtiriluvchi harflar maxsus formula bo‘yicha aniqlanadi: E(x)=ax+b (modm), bu yerda a, b - butun sonlar bo‘lib, kalitlar hisoblanadi, 0≤a, bm – alfavit uzunligi.
Deshifrlash jarayoni quyidagi formula asosida amalga oshiriladi: . Bu yerda a-1 modm bo‘yicha a ga teskari bo‘lgan son.
Lotin alfaviti foydalanilganda u quyidagicha raqamlanadi:

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25



Shifrlash. Ushbu usulda ma’lumotlarni shifrlash uchun “ATTACK AT DAWN” ochiq matni olinib, kalit sifatida a=3 va b=4 olindi. Alfavit uzunligi m=26 ga teng. Bu holda shifrlash funksifsining umumiy ko‘rinishi quyidagicha bo‘ladi: . Yuqoridagi jadvalga asoslanib quyidagini olish mumkin:

Xabar

A

T

T

A

C

K

A

T

D

A

W

N



0

19

19

0

2

10

0

19

3

0

22

13

Shifrlashning umumiy ko‘rinishi esa quyidagicha bo‘ladi:

Xabar

A

T

T

A

C

K

A

T

D

A

W

N

x

0

19

19

0

2

10

0

19

3

0

22

13

3x+4

4

61

61

4

10

34

4

61

13

4

70

43

(3x+4)mod26

4

9

9

4

10

8

4

9

13

4

18

17

Shifr matn

E

J

J

E

K

I

E

J

N

E

S

R

Deshifrlash jarayoni. Deshifrlash formulasi ga teng bo‘lib, , b=4 va m=26 ga teng bo‘ladi.

Shifr matn

E

J

J

E

K

I

E

J

N

E

S

R



4

9

9

4

10

8

4

9

13

4

18

17

Deshifrlashning umumiy ko‘rinishi esa :

Shifrmatn

E

J

J

E

K

I

E

J

N

E

S

R

y

4

9

9

4

10

8

4

9

13

4

18

17

9(y-4)

0

45

45

0

54

36

0

45

81

0

126

117

9(y-4)mod26

0

19

19

0

2

10

0

19

3

0

22

13

Xabar

A

T

T

A

C

K

A

T

D

A

W

N

Olingan alfavitdagi barcha belgilarni shifrlash natijasi quyidagiga teng bo‘ladi.

Xabar

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

x

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

(3x+4)mod26

4

7

10

13

16

19

22

25

2

5

8

11

14

17

20

23

0

3

6

9

12

15

18

21

24

1

Shifr matn

E

H

K

N

Q

T

W

Z

C

F

I

L

O

R

U

X

A

D

G

J

M

P

S

V

Y

B



Algoritmni c# tilidagi kodini keltirib o’tamiz.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Affin_sezar_usuli


{
public partial class Form1 : Form
{
public Form1()
{
//richTextBox2.Enabled = false;
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int key = int.Parse(textBox1.Text); // shifr=key*matn+b;
int n = key % 256;

string matn = richTextBox1.Text;


int k = matn.Length;
int b = 53;
int[] shifr= new int[k];
int[] d = new int[k];

for (int i = 0; i < k; i++)


{
d[i] = (int)matn[i];

}
for (int i = 0; i < k; i++)


{
shifr[i] = (d[i] * key + b + n * 256) % 256;
}
string soz = "";
for (int i = 0; i < k; i++)
{
soz = soz + Convert.ToString(((char)shifr[i]));
}
richTextBox2.Text = soz;
}

private void button3_Click(object sender, EventArgs e)


{
Application.Exit();
}
int a;
private void button2_Click(object sender, EventArgs e)
{
int key = int.Parse(textBox1.Text);
int n = key % 256;
//kalitga teskari sonni topish;
////////////////////////
int r1, r2, r, t1, t2, t, q;
int l = 256;
r1 = l; r2 = key;
t1 = 0; t2 = 1; // initalizatsiya
while (r2 > 0)
{
q = r1 / r2;// r ni aniqlash
r = r1 - q * r2;
r1 = r2;
r2 = r;
///////////////////// t ni aniqlash;
t = t1 - t2 * q;
t1 = t2; t2 = t;
}
// tublikka tekshirish
if (r1 == 1)
{
if (t1 > 0)
{
a = t1;
}
else
{
a = l + t1;
}
}
else
{
MessageBox.Show("berilgan maydonda ko'rsatilgan kalitga teskari son mavjud emas");
}
label4.Text = label4.Text + Convert.ToString(a);
//int j = Convert.ToInt64(a);
//////////////////////////////////
string matn1 = richTextBox2.Text;
int k = matn1.Length;
int b = 53;

int[] deshifr = new int[k]; // deshifr=(shifr-b)key(-1)%256


int[] d1 = new int[k];

for (int i = 0; i < k; i++)


{
d1[i] = (int)matn1[i];

}
for (int i = 0; i < k; i++)


{
deshifr[i] = ((d1[i] - b) * a + n * 256) % 256;
}
string soz = "";
for (int i = 0; i < k; i++)
{
soz = soz + Convert.ToString(((char)deshifr[i]));
}
richTextBox1.Clear();
richTextBox1.Text = "\n"+ soz;
} }

Polibiya Kvadrati
Polibiya kvadrati - bu birinchi bo'lib yunon tarixchisi va harbiy etakchisi Polybius tomonidan taklif qilingan belgilarni almashtirish yordamida matnli ma'lumotlarni shifrlash usuli.
Algoritm tavsifi
Shifrlash uchun to'rtburchak jadval ishlatiladi, unda shifrlangan alifboning barcha harflari yozilgan. Agar ko'proq harflar bo'lsa, unda siz ularni birlashtirasiz yoki o'zboshimchalik bilan belgilar bilan katak qo'shishingiz mumkin.
Ingliz alifbosi uchun kvadrat quyidagicha ko'rinishi mumkin:




1

2

3

4

5

1

A

B

C

D

E

2

F

G

H

I/J

K

3

L

M

N

O

P

4

Q

R

S

T

U

5

V

W

X

Y

Z

Rus tilida:




1

2

3

4

5

6

1

А

Б

В

Г

Д

Е

2

Ё

Ж

З

И

Й

К

3

Л

М

Н

О

П

Р

4

С

Т

У

Ф

Х

Ц

5

Ч

Ш

Щ

Ъ

Ы

Ь

6

Э

Ю

Я

1

2

3


Download 274.84 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling