Рефераты. Завадостійке кодування на основі циклічних кодів

3. GroupBox Control - використовується дві форми даного типу - GroupBox1 та GroupBox2. Вони призначені для групування інших форм Windows.

4. TextBox Control - одина форма TextBox використовується для виведення шляху до файлу, CRC якого обраховується, а друга для виведення результатів обрахунку CRC. Обидві форми TextBox розміщені на формі GroupBox1.

5. Label Control - компоненти Label (2 шт.) призначені для виведення повідомлень оператору про інші компоненти інтерфейсу. Обидві форми Label Control розміщені на формі GroupBox1.

6. RadioButton Control - використовуються для вибору полінома для підрахунку CRC. Використовується три форми даного типу, які дозволяють вибирати поліном CRC4, CRC8 та CRC32, які розміщуються на формі GroupBox2.

Розташування форм наведено на рис. 3.8.

Для програмної реалізації запропонованих алгоритмів CRC-кодування розроблено такі основні процедури і функції:

1. Метод класу Form1 btBrowse_Click () відкриває стандартне вікно Windows вибору файла для підрахунку CRC:

var open = new OpenFileDialog

;

if (open.ShowDialog() == DialogResult.OK)

{

filename = open.FileName;

tbSource.Text = filename;

}

Метод класу Form1 btSave_Click () зберігає обчислений CRC в окремий файл на диск, додаючи перед іменем файлу, CRC якого обчислювався, префікс CRC32 або CRC8 в залежності від вибраного полінома і розширення CRC. Це текстовий файл, який містить 4 рядки:

D:\CRC32\CRC32.sln

23.05.2010 0:27:23

crc8

9F

Перший рядок містить шлях до файлу CRC, якого обчислювався, другий дату і час, третій тип полінома, а четвертий рядок обчислений CRC.

2. Метод класу Form1 btCalc Click визначає вибраний поліном і викликає методи відповідного класу CRC для виконання обчислень:

if (CRC8.Checked)

{ var crc8 = new Crc8();

using (var f = File.Open(filename, FileMode.Open))

crc8.ComputeHash(f);

states = false;

tbResult.Text = crc8.CrcValue.ToString("x2").ToUpper();

} else

if (CRC32.Checked)

{

var crc32 = new Crc32();

using (var f = File.Open(filename, FileMode.Open))

crc32.ComputeHash(f);

states = true;

tbResult.Text = crc32.CrcValue.ToString("x2").ToUpper(); }

Тут використовуються методи класів CRC32 та CRC8, які є дочірніми для класу HashAlgorithm, зокрема метод..:: ComputeHash (), які обчислюють CRC табличним методом. Викликається на виконання при виборі кнопки «Підрахувати».

3. Метод класу Form1 btCheck_Click() обчислює CRC табличним методом і порівнює його з результатом, отриманим під час попередньої перевірки і збереженим на диск. Для цього необхідно вказати на початковий файл та файл з CRC цього файлу:

ініціалізація діалогу відкриття файлів

для файла що перевірятиметься

var open = new OpenFileDialog

;

додавання файла

if (open.ShowDialog() == DialogResult.OK)

{

fnm = open.FileName;

tbSource.Text = fnm;

}

ініціалізація фільтра для файла хеш-суми

open.Filter = "Хеш-сума (*.crc)|*.crc";

додавання файла

if (open.ShowDialog() == DialogResult.OK)

{

csm = open.FileName;

tbResult.Text = csm;}

А потім перевіряється рядок 3 файла з попереднім результатом:

if (crc == "crc8")

{ }

або

if (crc == "crc32")

{ }

І в залежності від цього обирається відповідний поліном, обчислюється CRC вибраного файла і порівнюється з попередньо обчисленим (рядок 4 у файлі з розширенням CRC). Викликається на виконання при виборі кнопки «Перевірити».

Текст програми наведений в додатку Б і містить необхідні для розуміння роботи коментарії.

3.3 Тестування програми

Дослідження виконувались з метою перевірки працездатності програми в двох режимах:

- CRC8 - використовувався поліном восьмої степені такого виду:

x8 + x5 + x4 + 1;

- CRC32 - використовувався поліном 32-ї степені такого виду:

x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1.

Для прикладу візьмемо файл CRC32.sln (файл даного проекта) і підрахуємо його контрольну суму з використанням полінома CRC32. Для цього запустимо на виконання файл CRC.exe, виберемо файл CRC32.sln та тип полінома CRC32 і клацнемо по кнопці «Підрахувати». Головне вікно програми для цього випадку наведено на рис. 3.3.

Рисунок 3.3 - Результати роботи програми в режимі CRC32 для файла CRC32.sln

Крім того результати запишемо у файл crc32CRC32.crc клацнувши «мишею» по кнопці з зображенням дискети. Вміст цього файлу такий:

D:CRC32CRC32.sln

23.05.2010 0:24:49

crc32

6E1BD466

Тепер в початковий вміст файлу CRC32.sln внесемо зміни - останній рядок EndGlobal замінимо на EndLocal (рис. 3.4)

а)

б)

Рисунок 3.4 - Вміст файлу CRC32.sln: а - початковий вміст файлу; б - вміст файлу після зміни останнього рядка

Для зміненого файлу виконаємо перевірку, вибравши команду «Перевірити», яка пропонує вибрати початковий файл та файл CRC, а потім обчислює CRC для початкового файлу і порівнює його з результатом попереднього обчислення. Для даного випадку результати наведені на рис. 3.5.

Рисунок 3.5 - Перевірка зміненого файлу

Тобто зафіксовано зміну файлу і виведено новий CRC. Для незміненого файла аналогічна перевірка виведе інше повідомлення (рис. 3.6).

Рисунок 3.6 - Перевірка не зміненого файлу

Обчислене значення CRC повністю співпадає з наведеним на рис. 3.2 для команди підрахувати. Таким чином в режимі CRC32 програма повністю працездатна.

Перевірку режиму CRC8 виконаємо з тим же файлом, внесемо аналогічні зміни і застосуємо ту ж саму методику. Результати наведені на рис. 3.7.

а) б)

Рисунок 3.7 - Тестування полінома CRC8: а - CRC8 до внесення змін; б- CRC8 після внесення змін

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

3.4 Керівництво оператора

Представлена програма призначена для обчислення контрольних сум з використанням циклічних CRC - кодів і була розроблена в середовищі Visual Studio 2008 на мові програмування C#. Програма може працювати на комп'ютері з операційною системою Windows XP та встановленою платформою Microsoft.NET Framework 3.5 або на комп'ютері з операційними системами Windows Vista або Windows 7, в які інтегрована платформа Microsoft.NET Framework.

Програма дозволяє обчислювати контрольні суми CRC8, CRC32, а інтерфейс користувача включає також CRC4, який може бути реалізований при необхідності. Програма має зручний інтерфейс користувача, тому для керування нею не потрібно мати спеціальних навиків роботи на комп'ютері.

Щоб запустити програму на виконання потрібно вибрати файл CRC32.exe, що знаходиться у папці CRC32. Після запуску програми з'явиться головне вікно, яке наведено на рис. 3.8.

Рисунок 3.8 - Головне вікно програми

Для обчислення CRC необхідно виконати такі дії:

1. Вибрати тип полінома - CRC8 або CRC32.

2. Вибрати файл, клацнувши «мишею» на кнопці справа від поля «Шлях до файла», в результаті чого з'являється стандартне вікно вибору файла. Після вибору файла активується кнопка «Підрахувати».

3. Клацнути «мишею» по кнопці «Підрахувати». В полі «Результат обчислень» появиться CRC вибраного файлу.

4. При необхідності можна зберегти цей результат в файл клацнувши «мишею» по кнопці справа від поля «Результат обчислення». СRC буде збережено у файл ім'я, якого має такий формат:

Префікс Ім'я початкового файлу Розширення

Префікс - CRC8 або CRC32

Розширення - crc

Приклад для файлу read.txt - crc32read.txt.

Цей файл містить 4 рядки (див. також п. 3.3):

Перший рядок - шлях до файлу

Другий рядок - дата і час перевірки

Третій рядок - тип полінома

Четвертий рядок - обчислений CRC.

Приклад:

D:CRC32CRC32.sln

23.05.2010 0:24:49

crc32

6E1BD466

Після цього файл з CRC можна записати на змінний носій, а потім видалити його з диска комп'ютера. Під час наступного включення комп'ютера з'являється можливість перевірити чи не змінив зловмисник файли на комп'ютері.

Для виконання перевірки необхідно вибрати команду «Перевірити». Відкриється стандартне вікно вибору файла, у якому необхідно вибрати файл, який ми хочемо перевірити і натиснути на кнопку «Открыть» (рис. 3.9). Після чого відкриється друге стандартне вікно вибору файлу, у якому необхідно вибрати відповідний файл з розширенням .crc.

а)

б)

Рисунок 3.9 - Вибір файлів при перевірці: а - вибір файлу для перевірки; б - вибір файлу з попереднім CRC для файлу, що перевіряється

Після виконання перевірки будуть виведені повідомлення про результати перевірки (рис. 3.5 - 3.6).

При виборі кнопки «Про програму» буде виведена інформація про дану роботу та її розробника (рис. 3.10).

Рисунок 3.10 - Вікно «Про програму»

Висновки

1. Розроблено алгоритми обчислення контрольних сум для поліномів CRC8 та CRC32 табличним методом.

2. В середовищі Visual Studio 2008 на мові програмування C#, розроблено програмне забезпечення, яке дозволяє виконувати обчислення СRC8 та СRC32 табличним методом.

3. Тестування програми показало, що навіть короткі поліноми здатні виявляти значні зміни файлів, що для кодів, які виправляють помилки вкрай важко.

4 Економічна частина

Створення нової програми передбачає розрахунок економічного ефекту від впровадження програмного продукту. Нова розробка повинна бути вигідною не тільки для виробника, а й для споживача, так як придбавши її він сподівається зменшити витрати часу та ресурсів.

Для того щоб оцінити економічний ефект в економічній частині потрібно розрахувати:

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.