Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи №2
з дисципліни:”Захист інформації в комп’ютерних системах ”
на тему:”Перестановочний шифр”
Мета роботи: ознайомитись з основами класичної техніки шифрування –перестановочними шифрами
Теоретичні відомості
/
/
/
Дана програма працює за таким принципом:дані які надходять для шифрування-дешифрування діляться на блоки однакової довжини.Саме шифрування-дешифрування проводиться за допомогою ключа,який,власне і визначає довжину блока.У випадку якщо залишається остача при діленні повідомлення на блоки,тоді різниця заповнюється першим символом вхідного повідомлення.Результат роботи програми зображено на Рис.1
/
Рис.1 Результат роботи програми
Висновок: В даній лабораторній роботі я ознайомився з технікою шифрування методом перестановочної заміни та розробив програму, яка шифрує повідомлення відповідним методом.
Код програми
Transposition.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TranspositionCipher
{
class Transposition
{
private int[] key = null;
public void SetKey(int[] _key)
{
key = new int[_key.Length];
for (int i = 0; i < _key.Length; i++)
key[i] = _key[i];
}
public void SetKey(string[] _key)
{
key = new int[_key.Length];
for (int i = 0; i < _key.Length; i++)
key[i] = Convert.ToInt32(_key[i]);
}
public void SetKey(string _key)
{
SetKey(_key.Split(' '));
}
public string Encrypt(string input)
{
for (int i = 0; i < input.Length % key.Length; i++)
input += input[i];
string result = "";
for (int i = 0; i < input.Length; i += key.Length)
{
char[] transposition = new char[key.Length];
for (int j = 0; j < key.Length; j++)
transposition[key[j] - 1] = input[i + j];
for (int j = 0; j < key.Length; j++)
result += transposition[j];
}
return result;
}
public string Decrypt(string input)
{
string result = "";
for (int i = 0; i < input.Length; i += key.Length)
{
char[] transposition = new char[key.Length];
for (int j = 0; j < key.Length; j++)
transposition[j] = input[i + key[j] - 1];
for (int j = 0; j < key.Length; j++)
result += transposition[j];
}
return result;
}
}
}
Form1.cs
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 TranspositionCipher
{
public partial class Form1 : Form
{
Transposition t;
public Form1()
{
InitializeComponent();
t = new Transposition();
}
private void startButton_Click(object sender, EventArgs e)
{
t.SetKey(keyTextBox.Text);
if (encryptRadioButton.Checked)
outputTextBox.Text = t.Encrypt(inputTextBox.Text);
else
outputTextBox.Text = t.Decrypt(inputTextBox.Text);
}
private void label2_Click(object sender, EventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}