Разработка программы для подсчета хэш-суммы файла и текста с графическим интерфейсом

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    244,66 Кб
  • Опубликовано:
    2012-08-27
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка программы для подсчета хэш-суммы файла и текста с графическим интерфейсом

Введение


В настоящее время с хэшированием мы сталкиваемся практически на каждом шагу: при работе с веб браузером, различными компиляторами, текстовыми редакторами и переводчиками, базами данных и т.д.

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

Такие преобразования также называются хэш-функциями или функциями свёртки, а их результаты называют хэшем <#"552443.files/image001.gif">

Это хэш-значение вместе со следующим блоком сообщения становится следующим входом функции сжатия. Хэш-значением всего сообщения является хэш-значение последнего блока.

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

        

         1.3 Описание алгоритма


Существует множество алгоритмов хэширования с различными характеристиками (разрядность <#"552443.files/image002.gif">

Рис. 0. Главный цикл MD5

Рис. 2. Одна операция MD5

F(X,Y,Z) = (X Ù Y) Ú ((ØX) Ù Z)

G(X,Y,Z) = (X Ù Z) Ú (Y Ù (ØZ))(X,Y,Z) = X Å Y Å Z(X,Y,Z) = Y Å (X Ú (ØZ))

(Å - это XOR, Ù - AND, Ú - OR, а Ø - NOT.)

Эти функции спроектированы так, чтобы, если соответствующие биты X, Y и Z независимы и не смещены, каждый бит результата также был бы независимым и несмещенным. Функция F - это побитовое условие: если X, то Y, иначе Z. Функция H - побитовая операция четности.

Если Mj обозначает j-ый подблок сообщения (от 0 до 15), а <<<s обозначает циклический сдвиг влево на s битов, то используются следующие четыре операции:

FF(a,b,c,d,Mj,s,ti) означает a = b + ((a + F(b,c,d) + Mj + ti) <<<s)(a,b,c,d,Mj,s,ti) означает a = b + ((a + G(b,c,d) + Mj + ti) <<<s)(a,b,c,d,Mj,s,ti) означает a = b + ((a + H(b,c,d) + Mj + ti) <<<s)(a,b,c,d,Mj,s,ti) означает a = b + ((a + I(b,c,d) + Mj + ti) <<<s)

Четыре этапа (64 действия выглядят следующим образом):

Этап 1:(a, b, c, d, M0, 7, 0xd76aa478)(d, a, b, c, M1, 12, 0xe8c7b756)(c, d, a, b, M2, 17, 0x242070db)(b, c, d, a, M3, 22, 0xc1bdceee)(a, b, c, d, M4, 7, 0xf57c0faf)(d, a, b, c, M5, 12, 0x4787c62a)(c, d, a, b, M6, 17, 0xa8304613)(b, c, d, a, M7, 22, 0xfd469501)(a, b, c, d, M8, 7, 0x698098d8)(d, a, b, c, M9, 12, 0x8b44f7af)(c, d, a, b, M10, 17, 0xffff5bb1)(b, c, d, a, M11, 22, 0x895cd7be)(a, b, c, d, M12, 7, 0x6b901122)(d, a, b, c, M13, 12, 0xfd987193)(c, d, a, b, M14, 17, 0xa679438e)(b, c, d, a, M15, 22, 0x49b40821)

Этап 2:(a, b, c, d, M1, 5, 0xf61e2562)(d, a, b, c, M6, 9, 0xc040b340)(c, d, a, b, M11, 14, 0x265e5a51)(b, c, d, a, M0, 20, 0xe9b6c7aa)(a, b, c, d, M5, 5, 0xd62fl05d)(d, a, b, c, M10, 9, 0x02441453)(c, d, a, b, M15, 14, 0xd8ale681)(b, c, d, a, M4, 20, 0xe7d3fbc8)(a, b, c, d, M9, 5, 0x2,lelcde6)(d, a, b, c, M14, 9, 0xc33707d6)(c, d, a, b, M3, 14, 0xf4d50d87)(b, c, d, a, M8, 20, 0x455al4ed)(a, b, c, d, M13, 5, 0xa9e3e905)(d, a, b, c, M2, 9, 0xfcefa3f8)(c, d, a, b, M7, 14, 0x676f02d9)(b, c, d, a, M12, 20, 0x8d2a4c8a)

Этап 3:(a, b, c, d, M5, 4, 0xfffa3942)(d, a, b, c, M8, 11, 0x8771f681)(c, d, a, b, M11, 16, 0x6d9d6122)(b, c, d, a, M14, 23, 0xfde5380c)(a, b, c, d, M1, 4, 0xa4beea44)(d, a, b, c, M4, 11, 0x4bdecfa9)(c, d, a, b, M7, 16, 0xf6bb4b60)(b, c, d, a, M10, 23, 0xbebfbc70)(a, b, c, d, M13, 4, 0x289b7ec6)(d, a, b, c, M0, 11, 0xeaa127fa)(c, d, a, b, M3, 16, 0xd4ef3085)(b, c, d, a, M6, 23, 0x04881d05)(a, b, c, d, M9, 4, 0xd9d4d039)(d, a, b, c, M12, 11, 0xe6db99e5)(c, d, a, b, M15, 16, 0x1fa27cf8)(b, c, d, a, M2, 23, 0xc4ac5665)

Этап 4:(a, b, c, d, M0, 6, 0xf4292244)(d, a, b, c, M7, 10, 0x432aff97)(c, d, a, b, M14, 15, 0xab9423a7)(b, c, d, a, M5, 21, 0xfc93a039)(a, b, c, d, M12, 6, 0x655b59c3)(d, a, b, c, M3, 10, 0x8f0ccc92)(c, d, a, b, M10, 15, 0xffeff47d)(b, c, d, a, M1, 21, 0x85845ddl)(a, b, c, d, M8, 6, 0x6fa87e4f)(d, a, b, c, M15, 10, 0xfe2ce6e0)(c, d, a, b, M6, 15, 0xa3014314)(b, c, d, a, M13, 21, 0x4e081lal)(a, b, c, d, M4, 6, 0xf7537e82)(d, a, b, c, M11, 10, 0xbd3af235)(c, d, a, b, M2, 15, 0x2ad7d2bb)(b, c, d, a, M9, 21, 0xeb86d391)

На i-ом этапе ti является целой частью 232*abs(sin(i)), где i измеряется в радианах.

После всего этого a, b, c и d добавляются к A, B, C и D, соответственно, и алгоритм продолжается для следующего блока данных. Окончательным результатом служит объединение A, B, C и D.

        

         1.4 Безопасность MD5


Рон Ривест привел следующие улучшения MD5 в сравнении с MD4:

1 Добавился четвертый этап.

2 Теперь в каждом действии используется уникальная прибавляемая константа.

3 Функция G на этапе 2 с ((XÙY)Ú(XÙZ)Ú(YÙZ)) была изменена на (XÙZ)Ú(YÙ(ØZ)), чтобы сделать G менее симметричной.

4 Теперь каждое действие добавляется к результату предыдущего этапа. Это обеспечивает более быстрый лавинный эффект.

5 Изменился порядок, в котором использовались подблоки сообщения на этапах 2 и 3, чтобы сделать шаблоны менее похожими.

6 Значения циклического сдвига влево на каждом этапе были приближенно оптимизированы для ускорения лавинного эффекта.

7 Четыре сдвига, используемые на каждом этапе, отличаются от значений, используемых на других этапах.

Том Берсон (Tom Berson) попытался применить дифференциальный криптоанализ к одному этапу MD5, но его вскрытие не оказалось эффективным ни для одного из четырех этапов. Более успешное вскрытие ден Боера и Босселаерса, использующее функцию сжатия, привело к обнаружению столкновений в MD5 Само по себе это вскрытие невозможно для вскрытия MD5 в практических приложениях, оно не влияет и на использование MD5 в алгоритмах шифрования, подобных Luby-Rackoff.

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

Хотя справедливо, что "кажется, что у функции сжатия есть слабое место, но это практически не влияет на безопасность хэш-функции "

 


Глава 2. Описание программы, реализующей алгоритм MD5 на Delphi

        

         2.1 Анализ технического задания и постановка задачи проектирования


Согласно заданию необходимо разработать программу вычисляющую хэш-код сообщения. Для решения поставленной задачи был выбран язык программирования Delphi, так как он является языком высокого уровня и позволяет быстро и эффективно создавать приложения. Delphi - это продукт Borland International, высокопроизводительный инструмент визуального построения приложений включает в себя настоящий компилятор кода и предоставляет средства визуального программирования, несколько похожие на те, что можно обнаружить в Microsoft Visual Basic или в других инструментах визуального проектирования. В основе Delphi лежит язык Object Pascal, который является расширением объектно-ориентированного языка Pascal.

Преимущества Delphi по сравнению с аналогичными программными продуктами.

быстрота разработки приложения;

высокая производительность разработанного приложения;

низкие требования разработанного приложения к ресурсам компьютера;

наращиваемость за счет встраивания новых компонент и инструментов в среду Delphi;

возможность разработки новых компонент и инструментов собственными средствами Delphi (существующие компоненты и инструменты доступны в исходных кодах);

Система программирования Delphi рассчитана на программирование различных приложений и предоставляет большое количество компонентов для этого.

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

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

.        Разработка обработчиков событий от элементов экранных форм, разработка алгоритмов и программных кодов действий.

        

         2.2 Разработка экранных форм программы


В Windows основной элемент пользовательского интерфейса - форма. В Delphi каждый проект имеет, по крайней мере, одно окно - главное окно приложения. Все окна в Delphi основаны на объекте TForm. Формы имеют свои свойства, события и методы, при помощи которых мы можем управлять видом и поведением формы. Форма, это обычный компонент Delphi, но в отличие от других, её нет на панели компонентов. В данном проекте используются 2 формы

- f_main (основная форма)

- f_info (форма «О программе», содержит информацию о программе, версию продукта, ФИО разработчика)


Список и назначение основных компонентов, расположенных на главной форме f_main:

-      Label. Этот компонент используется для отображения различных надписей на формах. Основное свойство для этого компонента -Caption. Именно оно и отвечает за надпись на компоненте.

-          Edit. Представляет собой однострочное текстовое поле, служащее для ввода данных пользователем. Основным свойством компонента, передающим введённую информацию, является свойство Edit1.Text типа String. На главной форме программы расположено два таких компонента e_file (предназначен для ввода полного пути к файлу, для которого необходимо вычислить хэш) и e_text (необходим для ввода текста, для которого так же нужно вычислить хэш).

-          RzToolbar. Это панель, которая управляет компоновкой инструментальных быстрых кнопок и других компонентов.

Похожие работы на - Разработка программы для подсчета хэш-суммы файла и текста с графическим интерфейсом

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!