MD5 калькулятор. Разработка Java приложения.

Владимир | | Eclipse, Java.

Если вы часто скачивали файлы из Интернета, то, наверняка видели, что рядом с именем файла часто пишут MD5 сумму (что-нибудь вроде 8ba351f1727e3f6454bd80b66f0ecbff). Многие люди просто не обращают на неё внимания, а зря. MD5 сумма это цифровой «отпечаток» файла, который указывает на его подлинность.

О программе
Использование программы
Сборка из исходных кодов
Скачать программу

О программе
Прежде всего небольшой скриншот.

MD5 калькулятор (скриншот)

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

Например, ни для кого не секрет, что сайты с высокой посещаемостью имеют «зеркала». Для того, что бы скачать программу вы заходите на главный сайт (например, www.sourceforge.net), выбираете нужный файл и вам предлагают выбрать сервер с которого будет производиться закачка. В принципе, на всех «зеркалах» файлы должны совпадать, но гарантий естественно вам никто не даст. Кроме того, файл может быть специально изменён (например, злобные хакеры встроили троян в нужную вам программу:-). MD5 сумма позволяет проверить соответствует ли скачанный файл оригиналу.

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

Полное описание MD5 алгоритма приведено в документе RFC1321, который можно найти на сайте www.rfc-editor.org (на английском). Кроме этого, советую прочитать статью Алгоритм построения цифрового дайджеста MD5, кроме очень хорошего перевода RFC1321 на русский тут есть масса полезной информации об алгоритме и примеры его реализации.

Теперь пару слов о том, зачем я решил написать эту программу. Дело в том, что большинство программ, которые я видел, консольные (например, md5sum), т.е. нужно работать с командной строкой, чего большинство пользователей просто не умеет (я имею ввиду пользователей Windows, а не Linux'a). Кроме того, мне просто было интересно написать эту программу на Java.

Первая версия программы рассчитывала MD5 дайджест только одного файла. В текущей версии (1.1) добавлена возможность рассчитывать MD5 дайджесты для всех файлов, расположенных в заданной папке. Результаты расчёта можно сохранить в файл. Кстати, этот файл можно использовать вместе с программой md5sum.

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


Инструкции

Использование программы не должно вызвать никаких проблем. Распакуйте архив с программой и запустите её (для этого можно сделать двойной щелчок по файлу MD5Calculator11.jar или в папке с этим файлом выполнить команду java -jar MD5Calculator11.jar).

В поле «Укажите имя папки (файла)» вводим имя папки или файла для которого нужно вычислить MD5 сумму. Если указано имя папки, то MD5 дайджесты будут рассчитаны для всех файлов, находящихся в данной папке. Можно воспользоваться кнопкой «Обзор» и выбрать нужный файл или папку в диалоговом окне. Дальше нажимаем на кнопку «Пуск», и, после окончания расчёта, откроется окно с результатами расчёта. В поле «Сохранить результаты в файл» можно задать имя файла в который будут сохранены результаты. Если сохранять результаты не нужно, то это поле можно оставить пустым.

Кстати, длинна MD5 суммы всегда равна 128 битам, т.е. вы увидите число из 32 символов в 16-ричной системе счисления (цифры от 0 до 9 и буквы от a до f).

Если вы хотите остановить расчёт MD5 суммы, просто нажмите кнопку «Стоп».

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

В меню «Справка» можно посмотреть информацию об этой программе.

Для того, чтобы запустить программу у вас должна быть установлена J2SE JRE (Java 2 Standart Edition Java Runtime Environment). (Я проверял с версиями 1.4.2_03 и 1.5.0_06). А для работы с исходными кодами вам также понадобиться SDK (Software Development Kit).

Скачать их можно с сайта Sun Microsystems.


Сборка из исходных кодов

В первую очередь вам нужно скачать архив с исходниками. Для сборки проекта вам понадобятся как минимум Java SDK и Apache Ant.

Рассмотрим подробнее процесс сборки. В архиве находится файл build.xml. Это конфигурационный файл для Apache Ant, в котором находятся все необходимые для сборки проекта настройки.

Итак, в первую очередь распаковываем архив.

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

ANT_HOME — содержит путь к папке в которую вы распаковали Ant.
PATH — должен содержать путь к папке bin, которая находится в папке ANT_HOME.
JAVA_HOME — содержит путь к папке, в которую установлен JavaSDK.

Например, под Windows эти переменные можно настроить так:

set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.2.2
set PATH=%PATH%;%ANT_HOME%\bin

под Windows 2000/XP тоже самое можно сделать в Свойствах Моего компьютера (вкладка Дополнительно, кнопка Переменные среды).

Под Unix (bash)

export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${PATH}:${ANT_HOME}/bin

Unix (csh)

setenv ANT_HOME /usr/local/ant
setenv JAVA_HOME /usr/local/jdk-1.2.2
set path=( $path $ANT_HOME/bin )

Если все настроено правильно, то переходим в папку, в которую распакован архив с исходниками (в этой папке должен находится файл build.xml).

И пишем в командной строке:

ant compile — создает папку build, в которой будет находится скомпилированный проект (файлы с расширением class).
ant run — действие аналогично предыдущей команде, но в этом случае после компиляции программы она будет запущена.
ant dist — действие аналогично ant compile, но кроме этого упаковывает программу в jar-архив (будет находится в папке dist). Запустить программу из этого архива можно либо командой java -jar MD5Calc.jar, либо дважды щелкнуть по этому архиву в проводнике (Windows).
ant packSrc — создает архив с исходниками (тот который вы скачивали).
ant test — выполняет тестирование программы. Требует наличия библиотеки JUnit (идет в комплекте вместе с большинством IDE).
ant clean — удаляет все файлы, созданные при сборке программы (останутся только исходники).

Если вы используете какую-либо среду разработки, то можете попробовать создать в ней новый проект, и добавить к нему файлы с исходниками программы.
У меня без проблем получилось создать проекты в NetBeans 4.0 и Eclipse 3.0.


Скачать :

программу MD5Calculator11.zip (28 кБ)

исходный код MD5Calculator_Src11.zip (42 кБ)

Постовой

Профессиональное создание сайта в Одессе

  • Alexander 1Putnik Kravez

    Спасибо вам большое!Програмка простая,в смысле дружелюбная к пользователю и полезная.Успехов вам в дальнейшей вашей работе.

  • Alexander 1Putnik Kravez

    Спасибо вам большое!Програмка простая,в смысле дружелюбная к пользователю и полезная.Успехов вам в дальнейшей вашей работе.

  • Daulet

    Зравствуйте,спасибо за программу

  • Daulet

    Зравствуйте,спасибо за программу

  • Alexandr

    Пытаюсь перевести исходники на maven2.
    Вроде все нормально компилируется.
    Тесты выполняются успешно.
    Но почему то не могу запустить главную функцию.
    И скомпилированный файл получается почему то меньше чем если через Ант компилить(

    Помогите пожалуйста.

    • Честно говоря maven не использовал.
      Попробуйте открыть jar файл архиватором и посмотрите создался manifest.mf или нет.
      Он должен находится в папке META-INF.
      В этом файле должна быть строка
      Main-Class: md5calc.Main
      она и определяет точку входа.

      manifest.mf создается при компиляции автоматически, но при создании jar файла его нужно указывать явно.
      Посмотрите build.xml
      <target name=»dist» depends=»compile»>
      <jar destfile=»${dist}/MD5Calculator.jar» basedir=»${buildSrc}» manifest=»${src}/manifest.mf» />
      </target>

      По-идее, в maven должны быть аналогичные параметры.

  • Alexandr

    Пытаюсь перевести исходники на maven2.
    Вроде все нормально компилируется.
    Тесты выполняются успешно.
    Но почему то не могу запустить главную функцию.
    И скомпилированный файл получается почему то меньше чем если через Ант компилить(

    Помогите пожалуйста.

    • Честно говоря maven не использовал.
      Попробуйте открыть jar файл архиватором и посмотрите создался manifest.mf или нет.
      Он должен находится в папке META-INF.
      В этом файле должна быть строка
      Main-Class: md5calc.Main
      она и определяет точку входа.

      manifest.mf создается при компиляции автоматически, но при создании jar файла его нужно указывать явно.
      Посмотрите build.xml
      <target name=»dist» depends=»compile»>
      <jar destfile=»${dist}/MD5Calculator.jar» basedir=»${buildSrc}» manifest=»${src}/manifest.mf» />
      </target>

      По-идее, в maven должны быть аналогичные параметры.

  • Sergey

    Здравствуйте!
    Спасибо Вам за программу. Работает великолепно.

  • Sergey

    Здравствуйте!
    Спасибо Вам за программу. Работает великолепно.

  • Prod

    Спасибо, отличная программа. Когда планируете на базе md6 ?
    http://groups.csail.mit.edu/cis/md6/downloads.html

    • На данный момент не планирую. Возможно когда MD6 станет более распространен. Все-таки основное назначение программы — проверка сумм скачанных файлов, а для них в основном приводят MD5.

  • Prod

    Спасибо, отличная программа. Когда планируете на базе md6 ?
    http://groups.csail.mit.edu/cis/md6/downloads.html

    • На данный момент не планирую. Возможно когда MD6 станет более распространен. Все-таки основное назначение программы — проверка сумм скачанных файлов, а для них в основном приводят MD5.

  • Спасибо! Замечательная программа! Очень пригодилась! Порой качаешь файл в несколько Гб и не уверен в его подлинности… печальный опыт уже есть )) СПАСИБО!!! Успехов!!!

  • Спасибо! Замечательная программа! Очень пригодилась! Порой качаешь файл в несколько Гб и не уверен в его подлинности… печальный опыт уже есть )) СПАСИБО!!! Успехов!!!

  • Сергей

    Спасибо, хорошая программа

  • Сергей

    Спасибо, хорошая программа

  • Александр

    Спасибо!

  • Александр

    Спасибо!

  • pavel

    Давно пользуюсь http://soft.mydiv.net/win/download-DivHasher.html

    Пока доволен и советую.

  • pavel

    Давно пользуюсь http://soft.mydiv.net/win/download-DivHasher.html

    Пока доволен и советую.

  • Радик

    Подскажите как вы сделали исполняемый zip с jar файлом внутри. Из просмотра build.xml я не смог понять как это делается.

    • Но zip не исполняемый, это обычный архив. Исполняемый jar файл.
      Чтобы jar файл запускался, нужно в манифесте (META-INFMANIFEST.MF) указать точку входа (название класса и метод).
      Main-Class: md5calc.Main

      • Радик

        Спасибо, Владимир.
        Я немного сам запутался. Дело в том, что в build.xml есть target 'packSrc'. Я подумал, что это он делает тот самый zip для скачки md5calculator11.zip. Это конечно не так.
        Для того чтобы получить md5calculator11.zip нужно было просто zip архиватором запаковать MD5Calculator.jar, который создается в dist.
        Это и будет zip файл с исполняемым jar внутри!

  • Zaraisc

    В исходных файлах не открываются комментарии  к коду.
    NetBeans Задает вопрос «Безопасное открытие файла с кодировкой UTF-8 невозможно»

    • Попробуйте открыть с помощью другого редактора.