DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
УІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Криптографія

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» / ЗВІТ до лабораторної роботи №1 з курсу: «Криптографія і стеганографія» Мета роботи: дослідити метод матричного обходу,виявити його переваги і недоліки і написати програму для за шифрування і розшифрування повідомлень даним методом Короткі теоретичні відомості Матричний шифр обходу. Повідомлення записується рядками у вигляді прямокутної матриці. Криптотекст формується зчитуванням букв із матриці у зміненому порядку, а саме, стовпчиками. При цьому послідовність, у якій зчитуються стовпчики, визначається ключем. Було поширеним задання ключа у вигляді ключового слова, що легко запам’ятовувалось. Порядок зчитування стовпчиків збігався з алфавітним порядком букв ключового слова. «FXADFAXGVAGXXGGFXGADAVAVXGGFFFFFXGADDAADVXVXADFD». Нехай ключове слово є «GARDEN». Тепер застосуємо до отриманого текстуматричний шифр обходу: 4 1 6 2 3 5 G A R D E N F X A D F A X G V A G X X G G F X G A D A V A V X G G F F F F F X G A D D A A D V X V X A D F D Тепер, зчитуючи стовпці отриманої матриці відповідно зі старшинством букв ключового слова і розбиваючи текст на блоки, отримуємо остаточно шифротекст: «XGGDG FAXDA FVFGD DFGXA FAVFF XXAXF DVAXG VFDXD AVGAG XAA». Алгоритм методу    Код програми using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace Lab1__AutoKey_ { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void openToolStripMenuItem_Click(object sender, EventArgs e) { try { FileStream fs = null; OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = "c:\\"; ofd.Filter = "txt (*.txt)|*.txt|All files (*.*)|*.*"; ofd.FilterIndex = 1; ofd.RestoreDirectory = true; if (ofd.ShowDialog() == DialogResult.OK) { try { fs = new FileStream(ofd.FileName, FileMode.Open); } catch (FileNotFoundException ex) { MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } fs.Close(); textBox_input.Text = File.ReadAllText(ofd.FileName, Encoding.ASCII); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void exitToolStripMenuItem_Click(object sender, EventArgs e) { Application.Exit(); } private void encryptToolStripMenuItem_Click(object sender, EventArgs e) { int row, column; string text = textBox_input.Text; string open_txt = text.Replace(" ", ""); char[] open_txt_chars = open_txt.ToCharArray(); text = textBox_key.Text; char[] key = text.ToCharArray(); char[] sorted_key = new char[key.Length]; Array.Copy(key, sorted_key, key.Length); Array.Sort(sorted_key); if ((row = open_txt_chars.Length / key.Length) != 0) row++; column = key.Length; char[,] all_text = new char[row, column]; char[] encr_chars = new char[row*column]; int k = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { if (k >= open_txt_chars.Length) all_text[i, j] = ' '; else { all_text[i, j] = open_txt_chars[k]; } k++; } } int indx; k=0; for (int j = 0; j < column; j++) { indx = Array.IndexOf(key, sorted_key[j]); for (int i = 0; i < row; i++) { encr_chars[k] = all_text[i, indx]; k++; } } text = new string(encr_chars); textBox_output.Text = text; } private void decryptToolStripMenuItem_Click(object sender, EventArgs e) { int row, column, k; string text = textBox_input.Text; char[] encr_txt_chars = text.ToCharArray(); text = textBox_key.Text; char[] key = text.ToCharArray(); char[] sorted_key = new char[key.Length]; Array.Copy(key, sorted_key, key.Length); Array.Sort(sorted_key); row = encr_txt_chars.Length / key.Length; column = key.Length; char[,] all_text = new char[row, column]; char[] decr_chars = new char[row * column]; int indx; k = 0; for (int j = 0; j < column; j++) { indx = Array.IndexOf(key, sorted_key[j]); for (int i = 0; i < row; i++) { all_text[i, indx]= encr_txt_chars[k] ; k++; } } k = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < column; j++) { decr_chars[k] = all_text[i, j]; k++; } } text = new string(decr_chars); text = text.TrimEnd(); textBox_output.Text = text; } private void saveOutputToolStripMenuItem_Click(object sender, EventArgs e) { try { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"; saveFileDialog1.FilterIndex = 1; saveFileDialog1.RestoreDirectory = true; if (saveFileDialog1.ShowDialog() == DialogResult.OK) { StreamWriter myStream = new StreamWriter(saveFileDialog1.FileName, false, Encoding.ASCII); myStream.Write(textBox_output.Text); myStream.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void cleanAllFieldsToolStripMenuItem_Click(object sender, EventArgs e) { textBox_input.Text = ""; textBox_key.Text = ""; textBox_output.Text = ""; } private void Form1_Load(object sender, EventArgs e) { } } } Результати роботи програми / / Висновок: Метод матричного обходу для зашифрування повідомлень є нескладним для програмної реалізації. Недоліком методу є те, що його можна легко взламати методом перебору, тільки це може зайняти багато часу, якщо довжина повідомлення значно перевищує довжину ключа.
Антиботан аватар за замовчуванням

18.09.2013 12:54

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!