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-1modm 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;
}
{
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: