DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи №1 з курсу «Криптографія і стеганографія»

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

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

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

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

Про що ця робота

Досліджено метод матричного обходу для шифрування та розшифрування текстових повідомлень. Написано програму на мові C# для програмної реалізації даного шифру.

У роботі розглядаються

  • Криптографія
  • Стеганографія
  • Матричний шифр обходу
  • Шифрування текстів
  • Програмна реалізація
  • Мова C#

Зміст і розділи

  1. Мета роботи
  2. Короткі теоретичні відомості
  3. Алгоритм методу
  4. Код програми
  5. Результати роботи програми
  6. Висновок
Для кого:Студенти технічних спеціальностей, викладачі дисциплін з інформаційної безпеки та криптографії.
Викладачі:Іванюк В. М.

Ключові поняття

матричний шифр обходукриптотекстключове словошифруваннярозшифруванняалгоритмпрограмний кодC#звітлабораторна робота

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

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» / ЗВІТ до лабораторної роботи №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) { } } } Результати роботи програми / / Висновок: Метод матричного обходу для зашифрування повідомлень є нескладним для програмної реалізації. Недоліком методу є те, що його можна легко взламати методом перебору, тільки це може зайняти багато часу, якщо довжина повідомлення значно перевищує довжину ключа.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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