close

Вход

Забыли?

вход по аккаунту

?

отчет 1

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ПЕНЗЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Кафедра "Вычислительной техники"
Отчет
о выполнении лабораторной работы №1
по курсу: "МИСЗИКИ"
на тему: "Разработка программы шифрования/дешифрирования текста с использованием перестановочного шифра"
Выполнили: студенты гр.10ВВ2
Максимова К.С.
Чепанова А.Г.
Проверил: Дубравин А.В Пенза 2013
Лабораторное задание
Разработать программу, выполняющую шифрование/дешифрирование текстового файла с использованием перестановочного шифра. Ширина таблицы зависит от номера варианта и вычисляется как (N+3) * 4. Для тестирования использовать файлы размером не менее 10 КБ.
Вариант №6
Листинг программы на языке VHDL
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
namespace ZI_Lab1
{
public partial class Form1 : Form
{
enum EMode
{
ECoder,
EDecoder
}
int N = 0x0;
int cellsOfTable = 0x0;
public Form1()
{
InitializeComponent();
dataGridView1.ReadOnly = true;
dataGridView2.ReadOnly = true;
// Номер варианта
N = 6;
// Столбцы
cellsOfTable = (N + 3) * 4;
}
private void зашифроватьToolStripMenuItem1_Click(object sender, EventArgs e)
{
JustDoIt(EMode.ECoder);
}
private void расшифроватьToolStripMenuItem_Click(object sender, EventArgs e)
{
JustDoIt(EMode.EDecoder);
}
private void EncryptoinString(string strOpen)
{
int i = 0x0;
// Количество строк
long rowsOfTable = strOpen.Length / cellsOfTable;
if (0 != strOpen.Length % cellsOfTable)
{
rowsOfTable++;
}
for (i = 0x0; i < rowsOfTable; i++)
{
dataGridView1.Rows.Add();
dataGridView2.Rows.Add();
}
int rows = 0x0;
int cells = 0x0;
for (i = 0x0; i < rowsOfTable; i++)
{
for (int j = 0; j < cellsOfTable; j++)
{
if (rows < strOpen.Length)
{
dataGridView1.Rows[i].Cells[j].Value = strOpen[rows++];
}
else
{
dataGridView1.Rows[i].Cells[j].Value = null;
}
}
}
rows = 0x0;
cells = 0x0;
// Шифруем текст
for (i = 0x0; i < cellsOfTable; i++)
{
for (int j = 0x0; j < rowsOfTable; j++)
{
dataGridView2.Rows[rows].Cells[cells].Value = dataGridView1.Rows[j].Cells[i].Value;
if (dataGridView2.Rows[rows].Cells[cells].Value != null)
{
textBox2.AppendText(dataGridView2.Rows[rows].Cells[cells].Value.ToString());
}
else
{
textBox2.AppendText(" ");
}
cells++;
if (cells == cellsOfTable)
{
rows++;
cells = 0x0;
}
}
}
}
private void DecryptionString(string strOpen)
{
int i = 0x0;
// Количество строк
long rowsOfTable = strOpen.Length / cellsOfTable;
// Остаток, который не помещается в целую строку
int ost = strOpen.Length % cellsOfTable;
if (0 != strOpen.Length % cellsOfTable)
{
rowsOfTable++;
}
for (i = 0x0; i < rowsOfTable; i++)
{
dataGridView1.Rows.Add();
dataGridView2.Rows.Add();
}
int rows = 0x0;
for (i = 0x0; i < rowsOfTable; i++)
{
for (int j = 0; j < cellsOfTable; j++)
{
if (rows < strOpen.Length)
{
dataGridView1.Rows[i].Cells[j].Value = strOpen[rows++];
}
else
{
dataGridView1.Rows[i].Cells[j].Value = null;
}
}
}
rows = 0x0;
// Дешифруем текст
for (i = 0x0; i < cellsOfTable; i++)
{
for (int j = 0; j < rowsOfTable; j++)
{
if (rows < strOpen.Length)
{
dataGridView2.Rows[j].Cells[i].Value = strOpen[rows++];
}
else
{
dataGridView2.Rows[j].Cells[i].Value = null;
}
}
}
rows = 0x0;
for (i = 0x0; i < rowsOfTable; i++)
{
for (int j = 0; j < cellsOfTable; j++)
{
if (null != dataGridView2.Rows[i].Cells[j].Value)
{
textBox2.AppendText(dataGridView2.Rows[i].Cells[j].Value.ToString());
}
}
}
}
private void JustDoIt(EMode mode)
{
try
{
if (DialogResult.OK == openFileDialog1.ShowDialog())
{
FileStream stream = new FileStream(openFileDialog1.FileName, FileMode.Open);
if (0 == stream.Length)
{
MessageBox.Show("Нулевой файл!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();
dataGridView2.Rows.Clear();
dataGridView2.Columns.Clear();
textBox1.Text = "";
textBox2.Text = "";
for (int i = 0x0; i < this.cellsOfTable; i++)
{
dataGridView1.Columns.Add((i + 1).ToString(), (i + 1).ToString());
dataGridView2.Columns.Add((i + 1).ToString(), (i + 1).ToString());
}
StreamReader reader = new StreamReader(stream, Encoding.Default);
string strOpen = reader.ReadToEnd().ToUpper();
textBox1.Text = strOpen;
switch (mode)
{
case EMode.ECoder:
EncryptoinString(strOpen);
break;
case EMode.EDecoder:
DecryptionString(strOpen);
break;
}
reader.Close();
stream.Close();
}
}
catch (Exception exp)
{
MessageBox.Show(exp.ToString(), "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)
{
if (DialogResult.OK == saveFileDialog1.ShowDialog())
{
FileStream stream = new FileStream(saveFileDialog1.FileName, FileMode.Create);
StreamWriter writer = new StreamWriter(stream, Encoding.Default);
writer.Write(textBox2.Text);
writer.Close();
}
}
}
}
Пример шифрования:
Пример расшифрования:
Вывод: в ходе выполнения работы была разработана программа, выполняющая шифрование/дешифрирование текстового файла с использованием перестановочного шифра.
Документ
Категория
Рефераты
Просмотров
8
Размер файла
57 Кб
Теги
отчет
1/--страниц
Пожаловаться на содержимое документа