Axborotni himoyalashning kriptografik usullari fanidan 1 amaliy mashg‘uloti Affin Sezar shifrlash algoritmi va uning dasturi Affin kriptotizimlari
Download 274.84 Kb.
|
Narimonoov 1 amaliy topshiriq
- Bu sahifa navigatsiya:
- Xabar A B C
- Algoritmni c tilidagi kodini keltirib o’tamiz.
- Polibiya Kvadrati Polibiya kvadrati
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, b 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:
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:
Shifrlashning umumiy ko‘rinishi esa quyidagicha bo‘ladi:
Deshifrlash jarayoni. Deshifrlash formulasi ga teng bo‘lib, , b=4 va m=26 ga teng bo‘ladi.
Deshifrlashning umumiy ko‘rinishi esa :
Olingan alfavitdagi barcha belgilarni shifrlash natijasi quyidagiga teng bo‘ladi.
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]; }
{ 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]; }
{ 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:
Rus tilida:
Download 274.84 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling