на тему рефераты
 
Главная | Карта сайта
на тему рефераты
РАЗДЕЛЫ

на тему рефераты
ПАРТНЕРЫ

на тему рефераты
АЛФАВИТ
... А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я

на тему рефераты
ПОИСК
Введите фамилию автора:


Курсовая работа: Разработка программы "Формирование и проверка контрольной суммы кластеров"


Курсовая работа: Разработка программы "Формирование и проверка контрольной суммы кластеров"

ВВЕДЕНИЕ

Сложно переоценить важность такого устройства, как персональный компьютер. Интеграция компьютеров в повседневную жизнь людей достигла очень высокого уровня, что позволяет спрогнозировать еще большую компьютеризацию всех сфер жизни. Такая ситуация сложилась благодаря тому, что компьютер превратился в широко распространённое и гибкое средство для решения разнообразных задач.

Персональный компьютер, как известно, является универсальным устройством для обработки информации. Персональные компьютеры могут выполнять практически любые действия по обработке информации. Для этого необходимо составить для компьютера на понятном ему языке точную и подробную последовательность инструкций (программу), как надо обрабатывать информацию.

Абсолютное большинство всех персональных компьютеров мира работают под операционной системой Windows разных версий. Поэтому и большинство программ, которые создаются, созданы для использования именно под ОС Windows. Несложно понять потенциальную применимость любой программы, ведь работа нескольких профессиональных программистов может помочь миллионам пользователей в их работе, разнообразить их досуг, облегчить общение и многое другое.

В современных условиях разработки программного обеспечения сложно придумать что-нибудь новое, поэтому практически в каждом направлении разработки прикладных программ ведется ожесточенная борьба «за пользователя». Если раньше программа должна была всего лишь выполнять определенные функции, то теперь она должна обладать еще и рядом дополнительных свойств: удобным интерфейсом, простотой использования, гармоничностью дизайна.


ОБЩИЕ СВЕДЕНИЯ В ОБЛАСТИ ФОРМИРОВАНИЯ КОНТРОЛЬНОЙ СУММЫ И ПРОВЕРКИ КЛАСТЕРОВ

Целью данного курсового проекта является разработка программного обеспечения под названием «Подсчет и проверка контрольной суммы кластеров». Очевидно, что для выполнения задания в приложении должны быть реализованы функции просмотра параметров жесткого диска указанной операционной системы и анализа его структуры, также подсчета контрольной суммы. Следует отметить, что для понимания программных возможностей разрабатываемой программы необходимы конкретные знания о предметах исследования – стуктура файловых систем Windows и контрольная сумма.

1.1  Основные элементы в файловой системе Windows и их взаимодействие

Файловая система (англ. file system) — регламент, определяющий способ организации, хранения и именования данных на носителях информации. Она определяет формат физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имени файла (папки), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.

Файловая система связывает носитель информации с одной стороны и API для доступа к файлам — с другой. Когда прикладная программа обращается к файлу, она не имеет никакого представления о том, каким образом расположена информация в конкретном файле, так же, как и на каком физическом типе носителя (CD, жёстком диске, магнитной ленте или блоке флеш-памяти) он записан. Всё, что знает программа — это имя файла, его размер и атрибуты. Эти данные она получает от драйвера файловой системы. Именно файловая система устанавливает, где и как будет записан файл на физическом носителе (например, жёстком диске).

С точки зрения операционной системы, весь диск представляет собой набор кластеров размером от 512 байт и выше. Драйверы файловой системы организуют кластеры в файлы и каталоги (реально являющиеся файлами, содержащими список файлов в этом каталоге). Эти же драйверы отслеживают, какие из кластеров в настоящее время используются, какие свободны, какие помечены как неисправные.

Кластер (англ. cluster) — в некоторых типах файловых систем логическая единица хранения данных в таблице размещения файлов, объединяющая группу секторов. Например, на дисках с размером секторов в 512 байт, 512-байтный кластер содержит один сектор, тогда как 4-килобайтный кластер содержит восемь секторов.

Как правило, это наименьшее место на диске, которое может быть выделено для хранения файла.

Понятие кластер используется в файловых системах FAT и NTFS. Другие файловые системы оперируют схожими понятиями (зоны в Minix, блоки в Unix).


Рисунок 1.1 – Структура диска

На рисунку 1.1 показаны основные элементы структуры диска:

A.  Дорожка.

B.  Геометрический сектор.

C.  Сектор дорожки.

D.  Кластер.

1.2   Понятие контрольной суммы, ее предназначение

Контрольная сумма — некоторое значение, рассчитанное из последовательности данных путём применения определённого алгоритма, используемое для проверки правильности передачи данных (для исключения влияния каких-либо помех при передаче).

С точки зрения математики контрольная сумма является хеш-функцией, используемой для вычисления контрольного кода — небольшого количества бит внутри большого блока данных, например, сетевого пакета или блока компьютерного файла, применяемого для обнаружения ошибок при передаче или хранении информации. Значение контрольной суммы добавляется в конец блока данных непосредственно перед началом передачи или записи данных на какой-либо носитель информации. Впоследствии оно проверяется для подтверждения целостности данных.

Популярность использования контрольных сумм для проверки целостности данных обусловлена тем, что подобная проверка просто реализуема в двоичном цифровом оборудовании, легко анализируется и хорошо подходит для обнаружения общих ошибок, вызванных наличием шума в каналах передачи данных.

Одним из методов подсчета контрольной суммы является циклический избыточный код (в частности, CRC32), применяется для проверки целостности передачи данных. Программы-архиваторы включают CRC исходных данных в созданный архив для того, чтобы получающий мог удостовериться в корректности полученных данных. Такая контрольная сумма проста в реализации и обеспечивает низкую вероятность возникновения коллизий.

Алгоритм вычисления контрольной суммы (англ. Cyclic redundancy code, CRC — циклический избыточный код) — способ цифровой идентификации некоторой последовательности данных, который заключается в вычислении контрольного значения её циклического избыточного кода.

Алгоритм CRC базируется на свойствах деления с остатком двоичных многочленов, то есть многочленов над конечным полем GF(2). Значение CRC является по сути остатком от деления многочлена, соответствующего входным данным, на некий фиксированный порождающий многочлен.

Каждой конечной последовательности битов  взаимно-однозначно сопоставляется двоичный многочлен , последовательность коэффициентов которого представляет собой исходную последовательность. Например, последовательность битов 1011010 соответствует многочлену:


Нетрудно видеть, что количество различных многочленов степени меньшей N равно 2N, что совпадает с числом всех двоичных последовательностей длины N.

Значение CRC с порождающим многочленом G(x) степени N определяется как битовая последовательность длины N, представляющая многочлен R(x), получившийся в остатке при делении многочлена P(x), представляющего входной поток бит, на многочлен G(x):

где:

R(x) — многочлен, представляющий значение CRC.

P(x) — многочлен, коэффициенты которого представляют входные данные.

G(x) — порождающий многочлен.

 — степень порождающего многочлена.

Умножение xN осуществляется приписыванием N нулевых битов к входной последовательности, что улучшает качество хеширования для коротких входных последовательностей.

При делении с остатком степень многочлена-остатка строго меньше степени многочлена-делителя, то есть при делении на многочлен G(x) степени N можно получить 2N различных остатков от деления. При «правильном» выборе порождающего многочлена G(x), остатки от деления на него будут обладать нужными свойствами хеширования — хорошей перемешиваемостью и быстрым алгоритмом вычисления. Второе обеспечивается тем, что степень порождающего многочлена обычно пропорциональна длине байта или машинного слова (например 8, 16 или 32).

Операция деления на примитивный полином также эквивалентна следующей схеме:

Пусть выбран примитивный полином, задающий цикл де Брейна 0010111001011100… и блок данных 0111110, построена таблица, верхняя строка заполнена блоком данных, а нижние строки — смещения на 0,1,2 бит цикла де Брейна

Тогда контрольная сумма будет равна операции XOR тех столбцов, над которыми в верхней строке расположена 1. В этом случае, 010 xor 101 xor 011 xor 111 xor 110 = 101 (CRC).

Алгоритм CRC32, используемый данным проектом, основан на примитивном полиноме 0xEDB88320 (зеркальное отображение полинома 0x04C11DB7) и является одним из самых распространенных методов подсчета контрольной суммы.

Еще используется криптографический алгоритм MD5.

MD5 (англ. Message Digest 5) — 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом из Массачусетского технологического института (Massachusetts Institute of Technology, MIT) в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины. Является улучшенной в плане безопасности версией MD4.[1] Зная MD5-образ (называемый также MD5-хеш или MD5-дайджест), невозможно восстановить входное сообщение, так как одному MD5-образу могут соответствовать разные сообщения. Используется для проверки подлинности опубликованных сообщений путём сравнения дайджеста сообщения с опубликованным. Эту операцию называют «проверка хеша» (hashcheck).

На вход алгоритма поступает входной поток данных, хеш которого необходимо найти. Длина сообщения может быть любой (в том числе нулевой). Запишем длину сообщения в L. Это число целое и неотрицательное. Кратность каким-либо числам необязательна. После поступления данных идёт процесс подготовки потока к вычислениям.

Ниже приведены 5 шагов алгоритма:

Шаг 1. Выравнивание потока.

Шаг 2. Добавление длины сообщения.

Шаг 3. Инициализация буфера.

Шаг 4. Вычисление в цикле.

Шаг 5. Результат вычислений.

1.3  Выбор платформы и языка разработки приложения

Перед началом разработки был произведен анализ требований к программному обеспечению, результаты которого были преобразованы в требования к платформе разработки:

простота организации и программирования пользовательского интерфейса;

возможность работать на компьютерах с версией ОС Windows ХР и выше;

возможность работы с файловой системой Windows;

возможность работы с математическими операциями.

В результате было принято решение разрабатывать приложение на основе технологии .NET, т.к. она является «родной» для операционных систем семейства Windows и позволяет работать с файловой системой. .NET Framework — программная технология от компании Microsoft, платформа для создания и развертывания приложений. Она предоставляет высокопроизводительную, основанную на стандартах, многоязыковую среду, которая позволяет интегрировать существующие приложения с приложениями и сервисами следующего поколения, а также решать задачи развертывания и использования интернет-приложений. .NET Framework состоит из трех основных частей - общеязыковой среды выполнения, иерархического множества унифицированных библиотек классов и компонентной версии ASP, называемой ASP.NET. Т.к. при работе с платформой . NET существует возможность работать с несколькими языками программирования выбор был сделан в пользу языка C#, как наиболее распространенного и развитого языка разработки приложений.

Необходимо упомянуть также о возможности визуальной разработки программного обеспечения, которую предоставляет платформа .NET. Очевидно, что упрощение создания пользовательского интерфейса позволит уделить больше внимания функциональной полноте разрабатываемой программы.

1.4  Функциональные возможности разрабатываемого программного обеспечения

Основываясь на правиле, что для программного обеспечения первичным является выполнение им необходимых функций, выделим основные действия, которые должна выполнять разрабатываемая программа:

отображение носителей информации подключенных к ОС;

отображение параметров нужного носителя информации;

формирование и вывод контрольной суммы кластеров;

проверку контрольной суммы кластеров.

Таким образом, каждая из вышеперечисленных функций должна быть реализована для выполнения задания к курсовому проекту. Очевидно, что описанные функции являются каркасом приложения, которое также должно отвечать следующим требованиям: минимальные аппаратные требования, интуитивность пользовательского интерфейса и удобство работы с ним, корректность работы в исключительных ситуациях.


РАЗРАБОТКА СТРУКТУРЫ И АЛГОРИТМОВ ПРОГРАММЫ

2.1  Логическая структура интерфейса пользователя

Для построения приложения, которое реализовывает предполагаемый функционал и приспособлено к работе с конечным пользователем было принято решения о распределении логически-функциональной нагрузки между несколькими окнами приложения. Это обусловлено тем, что нагромождение всех возможных настроек, функций и информационных блоков в одном окне приводит перегрузке интерфейса и неудобству работы с приложением.

Для организации интерфейса разработана следующая структура окон программы:

1. Основное окно программы – список для вывода подключенных устройств памяти, а также выбора между ними, текстовое поле выводящее информацию о выбранном устройстве, кнопка анализа, текстовое поле хранящее информацию не зависимо от выбора, для сравнения, кнопка проверки алгоритмов.

2. Окно проверки алгоритмов – имеет 2 кнопки для запуска нужного алгоритма, 2 текстовых поля для вывода результатов подсчета, по одному на каждый алгоритм и по одному поля для ввода информации.

Навигация между окнами производиться стандартными средствами Windows, а также кнопки проверки алгоритмов.

2.2   Программная организация отображения информации об устройствах памяти и контрольных сумм

Учитывая тот факт, что файловая система ОС Windows является иерархической базой данных, объем которой достаточно велик, необходимо использовать промежуточные программные средства для хранения и отображения пользователю информации о ней.

Для этой цели в рамках разрабатываемого приложения был создан класс HardDrive. Данный класс упрощает как хранение информации, так и отображение ее на экране в виде, удобном для пользователя. Условно класс HardDrive хранит структуру объектов, каждый из которых может иметь неограниченное число дочерних узлов. Также стоит указать, что для изменения атрибутов файла в программе использовался класс File из библиотеки .NET.

2.3   Структурная декомпозиция функций разрабатываемого программного обеспечения

Для реализации функциональных возможностей приложения, описанных в пункте 1.3 были описан набор программных функций, реализуемых приложением. Большинство из этих функций были описаны в классе основного окна приложения. Далее приведены декларации этих функций с описанием действий, которые они выполняют:

-  private void Form1_Load(object sender, EventArgs e) – функция вызывающаяся при загрузки программы, вызывает окно спрашивающие, действительно ли пользователь хочет считать информация и запускает функции взятия информации и добавления ее в список.

-  private void GetHardDiskInfo() – функция считывания информации о запоминающем устройстве.

-  private void AddHDDItemToListview() – функция добавляющая в список подключенные запоминающие устройства.

-  private void AddItemToListview(ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG) – функция добавляющая информацию в структуру HardDrive.

-  private void WriteHDDText() – функция добавляющая информацию о запоминающем устройстве в текстовое поле.

-  private void listView1_SelectedIndexChanged(object sender, EventArgs e) – функция определяющая какое устройство пользователь выбрал в списке.

-  private void button1_Click(object sender, EventArgs e) – функция определяющая действие при нажатии кнопки «Анализ».

-  private void button2_Click(object sender, EventArgs e) – функция определяющая действие при нажатии кнопки «Проверить алгоритм».

-  private void button1_Click(object sender, EventArgs e) – функция определяющая действие при нажатии кнопки «CRC32».

-  public static uint CalculateCRC(System.IO.Stream stream) – функция запускающая формирование контрольной суммы CRC32.

-  private void button2_Click(object sender, EventArgs e) – функция определяющая действие при нажатии кнопки «MD5».

Также созданы функции по формированию контрольной суммы MD5, перечисленные ниже:

-  private static void FF(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

-  private static void GG(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

-  private static void HH(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

-  private static void II(ref UInt32 a, UInt32 b, UInt32 c, UInt32 d, UInt32 mj, int s, UInt32 ti)

-  private static void MD5_Init()

Описанные выше декларации функций отображают внутреннюю организацию приложения на уровне конкретных действий. Вызов этих функций в приложении не будет прямым, а будет производиться в функциях-обработчиках событий от конкретных компонентов пользовательского интерфейса. Это обусловлено тем, что пользователь напрямую не работает с файловой системой, а обращается к информации дерева класса HardDrive.


3. РЕАЛИЗАЦИЯ ПРОГРАММЫ

Приложение, которое является результатом курсового проектирования было реализовано на языке С# платформы .NET. При написании программы был использован объектно-ориентированный подход: были созданы и описаны два класса, каждый из которых включает в себя поведение одного из окон программы – Form1, Form2, а также диалоговое окно MessageBox спрашивающее разрешение пользователя на доступ программы к данным.

MessageBox реализует отображение окна с подтвеждением, на здоступ приложением к информации. Вид окна представлен на рисунке 3.1.

Рисунок 3.1 – Вид диалогового окна подтверждения

MessageBox имеют очень простую программную реализацию, которая не предполагает дополнительных объяснений, поэтому его код не описывается в пояснительной записке.

2.4   Программная реализация класса Form1

Класс Form1 описывает поведение основного окна приложения, внешний вид которого представлен на рисунке 3.2.

Как видно на рисунке 3.2, основное окно разработанного приложения Контрольная сумма включает в себя следующие элементы:

-  список подключенных устройств хранения данных, реализуемый объектом HDDGroup. С помощью списка производится выбор устройства;

-  текстовое поле отображения информации, реализуемое объектом richTextBox1;

-  текстовое поле отображения информации для проверки и сравнения, реализуемое объектом richTextBox2;

-  кнопку для анализа (Анализ);

-  кнопку запуска и проверки алгоритмов (Проверить алгоритм);

-  стандартные элементы управления окном в ОС семейств Windows.

Рисунок 3.2 – Внешний вид главного окна приложения

Конструктор, обработчики событий и члены класса Form1

Инициализация объектов-членов класса Form1 осуществляется в конструкторе класса. Ниже приведен код конструктора с комментариями:

public Form1() {

//инициализация компонента – необходима для создания окна

 InitializeComponent();

}

Также несколько методов класса Form1, код которого приведен в приложении являются обработчиками событий: нажатие кнопки, работа с информацией.

Программная реализация функции private void AddHDDItemToListview()

Данная функция добавляет в список подключенные запоминающие устройства. Ниже приведен код функции.

 private void AddHDDItemToListview()

 {

 //Makes the Search group:::......

 ListViewGroup HDDGroup = new ListViewGroup();

 HDDGroup.Header = "HardDrive(s) :";

 HDDGroup.HeaderAlignment = HorizontalAlignment.Left;

 HDDGroup.Name = "HardDrive(s)";

 //Adds the search group...

 listView1.Groups.Add(HDDGroup);

 int i = 0;

 foreach (HardDrive x in hdCollection)

 { AddItemToListview(HDDGroup, i, x.Model.ToString(), 0, "1");

 i++; }

 HDDGroup = null; }

Программная реализация функции private void AddItemToListview(ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)

Данная функция добавляет информацию в структуру HardDrive. Ниже приведен код функции.

private void AddItemToListview(ListViewGroup GroupName, int IndexNumber, string ItemName, int ImageIndex, string ItemTAG)

 { ListViewItem NewItem = new ListViewItem();

 ListViewItem.ListViewSubItem NewSubItem = new ListViewItem.ListViewSubItem();

 NewSubItem.Text = IndexNumber.ToString();

 NewSubItem.Name = "Subitem1";

 NewItem.SubItems.Add(NewSubItem);

 NewItem.SubItems.Add(NewSubItem);

 NewItem.Name = ItemName;

 NewItem.Text = ItemName;

 NewItem.Group = GroupName;

 NewItem.ImageIndex = ImageIndex;

 NewItem.Tag = ItemTAG;

 listView1.Items.Add(NewItem);

 NewItem = null;

 NewSubItem = null;

 // Group = null; }

Программная реализация функции private void private void listView1_SelectedIndexChanged(object sender, EventArgs e)

Данная функция определяет какое устройство пользователь выбрал в списке. Ниже приведен код функции.

private void listView1_SelectedIndexChanged(object sender, EventArgs e)

 { int selected_index;

 try {

 //MessageBox.Show(listView1.SelectedItems[0].Tag.ToString());

 selected_index = listView1.SelectedItems[0].Index;

 switch (listView1.SelectedItems[0].Tag.ToString())

 { case "1":

 WriteHDDText();

 break; } }

 catch (Exception)

 { //Do nothing } }


2.5 Программная реализация класса Form2

программа контрольная сумма кластер

Класс Form2 описывает поведение дополнительного окна приложения, внешний вид которого представлен на рисунке 3.3.

Рисунок 3.3 – Внешний вид дополнительного окна приложения

Как видно на рисунке 3.3, дополнителное окно разработанного приложения Контрольная сумма включает в себя следующие элементы:

-  четыре текстовых поля для ввода и вывода информации проверки алгоритмов формирования контрольной суммы кластеров, реализованные объектами textBox1, textBox2, textBox3, textBox4 ;

-  кнопку для запуска проверки алгоритма CRC32(проверить CRC32);

-  кнопку для запуска проверки алгоритма MD5 (проверить MD5);

-  стандартные элементы управления окном в ОС семейств Windows.

Конструктор, обработчики событий и члены класса Form2

Инициализация объектов-членов класса Form2 осуществляется в конструкторе класса. Ниже приведен код конструктора с комментариями:

Страницы: 1, 2


на тему рефераты
НОВОСТИ на тему рефераты
на тему рефераты
ВХОД на тему рефераты
Логин:
Пароль:
регистрация
забыли пароль?

на тему рефераты    
на тему рефераты
ТЕГИ на тему рефераты

Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое.


Copyright © 2012 г.
При использовании материалов - ссылка на сайт обязательна.