Как вычислить md5 хэш

Обновлено: 05.07.2024

Этичный хакинг и тестирование на проникновение, информационная безопасность

Что такое хеши и как они используются

Хеш-сумма (хеш, хеш-код) — результат обработки неких данных хеш-функцией (хеширования).

Это свойство хеш-функций позволяет применять их в следующих случаях:

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

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

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

Как определить тип хеша

Существует большое количество хешей. Некоторые из них являются универсальными и применяются различными приложениями, например, MD5, SHA1, CRC8 и другие. Некоторые хеши применяются только в определённых приложениях (MySQL, vBulletin) и протоколами.

Кроме популярных хешей, разработчики могут использовать различные сочетания универсальных хешей (например, посчитать хеш с помощью MD5, а затем для полученной строки получить хеш SHA1), либо итерированные (с повторением) хеши (например, для пароля рассчитывается MD5 хеш, затем для полученной строки вновь рассчитывается MD5 хеш, затем для полученной строки вновь считается MD5 – и так тысячу раз).

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

Пример такой строки для WinZip: $zip2$*0*3*0*b5d2b7bf57ad5e86a55c400509c672bd*d218*0**ca3d736d03a34165cfa9*$/zip2$

Пример строки для взлома пароля файла PDF 1.7 Level 8 (Acrobat 10 - 11): $pdf$5*6*256*-4*1*16*381692e488413f5502fa7314a78c25db*48*e5bf81a2a23c88f3dccb44bc7da68bb5606b653b733bcf9adaa5eb2c8ccf53abba66539044eb1957eda68469b1d0b9b5*48*b222df06deb308bf919d13447e688775fdcab972faed2c866dc023a126cb4cd4bbffab3683ecde243cf8d88967184680

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

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

Также можно использовать инструменты, которые значительно ускоряют этот процесс. Программами для определения типа хеша являются hashID и HashTag.

hashID

Эта программа по умолчанию уже установлена в Kali Linux. Она идентифицирует различные типы хешей, используемых для шифрования данных, в первую очередь, паролей.

hashID – это инструмент, написанный на Python 3, который поддерживает идентификацию более 220 уникальных типов хешей используя регулярные выражения.

Использование программы очень простое:

Пара важных замечаний:

  • хеш всегда лучше указывать в одинарных кавычках (а не без кавычек и не в двойных)
  • имеется опция -m, при использовании которой выводится информация о режиме Hashcat

Хеш режимы Hashcat – это условное обозначение типа хеша, которое необходимо указать с опцией -m, --hash-type.

К примеру, мне необходимо идентифицировать хеш $S$C33783772bRXEx1aCsvY.dqgaaSu76XmVlKrW9Qu8IQlvxHlmzLf:


Как можно увидеть по скриншоту, это Drupal > v7.x в Hashcat для взлома данного хеша необходимо указать режим 7900.

Идентифицируем хеш $1$VnG/6ABB$t6w9bQFxvI9tf0sFJf2TR.:

Получаем сразу несколько вариантов:


MD5cryp – это алгоритм, который вызывает тысячу раз стандартный MD5, для усложнения процесса.

Для справки: MD5 использовался для хеширования паролей. В системе UNIX каждый пользователь имеет свой пароль и его знает только пользователь. Для защиты паролей используется хеширование. Предполагалось, что получить настоящий пароль можно только полным перебором. При появлении UNIX единственным способом хеширования был DES (Data Encryption Standard), но им могли пользоваться только жители США, потому что исходные коды DES нельзя было вывозить из страны. Во FreeBSD решили эту проблему. Пользователи США могли использовать библиотеку DES, а остальные пользователи имеют метод, разрешённый для экспорта. Поэтому в FreeBSD стали использовать MD5 по умолчанию. Некоторые Linux-системы также используют MD5 для хранения паролей.

Ещё один хеш $6$q8C1F6tv$zTP/eEVixqyQBEfsSbTidUJfnaE2ojNIpTwTHava/UhFORv3V4ehyTOGdQEoFo1dEVG6UcXwhG.UHvyQyERz01:


Программа говорит, что это SHA-512 Crypt – т.е. SHA512 (Unix).

HashTag

HashTag – это инструмент на python, который разбирает и идентифицирует различные хеши паролей на основе их типа. HashTag поддерживает определение более 250 типов хешей и сопоставляет их с более чем 110 режимами hashcat. HashTag способен идентифицировать единичный хеш, разобрать единичный файл и определить хеши внутри него или обойти директорию и все поддиректории в поисках потенциальных файлов хешей и идентифицировать все найденные хеши.

Т.е. это аналогичная предыдущей программа.

По умолчанию в Kali Linux она отсутствует, поэтому требуется её скачать:

Идентифицируем те же самые хеши:




Как видим, результаты аналогичны.

Примеры хешей

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

На той странице вы можете:

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

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

К примеру, меня интересует хеш c73d08de890479518ed60cf670d17faa26a4a71f995c1dcc978165399401a6c4:53743528:


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

Получаем более правильный результат:


В действительности это sha256($pass.$salt).

Как рассчитать хеш (контрольную сумму)

В Linux имеются программы для расчёта и сверки популярных хешей:

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

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

Если для расчёта хеша строки вы используете echo, то крайне важно указывать опцию -n, которая предотвращает добавление символа новой строки – иначе каждый хеш для строки будет неверным!

Пример подсчёта хеша SHA1 для строки test:

Ещё один способ передачи строки без добавления конечного символа newline

Этот же результат можно получить следующей конструкцией:

Программы для вычисления различных хешей

Кроме перечисленных встроенных в Linux утилит, имеются другие программы, способные подсчитывать контрольные суммы. Часто они поддерживают сразу несколько алгоритмов хеширования, могут иметь дополнительные опции ввода и вывода (поддерживают различные форматы и кодировки), некоторые из них подготовлены для выполнения аудита файловой системы (выявления несанкционированных изменений в файлах).

Список некоторых популярных программ для вычисления хешей:

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

Последовательное хеширование с использованием трубы (|)

Но это неправильный вариант. Поскольку результатом выполнения в любом случае является непонятная строка из случайных символов, трудно не только обнаружить ошибку, но даже понять, что она есть. А ошибок здесь сразу несколько! И каждая из них ведёт к получению абсолютно неправильных данных.

Даже очень бывалые пользователи командной строки Linux не сразу поймут в чём проблема, а обнаружив первую проблему не сразу поймут, что есть ещё одна.

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

Выше уже рассмотрено, как из вывода удалять « -», кажется, теперь всё должно быть в порядке:

Давайте разобьём это действие на отдельные команды:

Второй этап хеширования:

Это и есть правильный ответ.

Проблема в том, что когда выводится промежуточный хеш, к нему добавляется символ новой строки, и второй хеш считается по этой полной строке, включающей невидимый символ!

Используя printf можно вывести результат без конечного символа новой строки:

Результат вновь правильный:

С printf не все дружат и проблематично использовать рассмотренную конструкцию если нужно хешировать более трёх раз, поэтому лучше использовать tr:

Вновь правильный результат:

Или даже сделаем ещё лучше – с программой awk будем использовать printf вместо print (это самый удобный и короткий вариант):

Как посчитать итерированные хеши

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

Итерация – очень эффективный метод для борьбы с радужными таблицами и с полным перебором (брут-форсом), поэтому в криптографии итерированные хеши очень популярны.

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

Область применения хеш-кодов:

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

MD5 как стандарт хеширования был разработан в 1991 году для создания уникального хеш-кода от заданного значения с последующей проверкой его подлинности.

Утилита md5sum, предназначенная для хеширования данных заданного файла по алгоритму MD5, возвращает строку. Она состоит из 32 чисел в шестнадцатеричной системе исчисления (016f8e458c8f89ef75fa7a78265a0025).


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

Что такое MD5?

Проблемы надежности MD5

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

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


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

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

Область применения алгоритма хеширования:

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

Проблемы надежности MD5

  • Для хеширования паролей – в семействе операционных систем UNIX каждый пользователь системы имеет свой уникальный пароль, для защиты которого используется хеширование на основе MD5 . Некоторые системы на основе Linux также пользуются этим методом шифрования паролей.

Обзор средств для декодирования хеш-кода MD5

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

Удобнее всего использовать специализированные ресурсы, предоставляющие возможность сделать это online :

  • md5.web-max.ca – данный сервис обладает простым и понятным интерфейсом. Для получения декодированного значения нужно ввести хеш и заполнить поле проверочной капчи:

Обзор средств для декодирования хеш-кода MD5

Обзор средств для декодирования хеш-кода MD5 - 2

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

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

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

Основы безопасности при использовании MD5

Этот стандарт кодирования является одним из самых распространенных методов защиты данных не только в прикладном, но и в веб-программировании. Поэтому не будет лишним обезопасить свой md5 hash от намеренного взлома.

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

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

Создать хеш-код MD5 в php можно с помощью нескольких функций:

  • md5() – в качестве одного из параметров принимает значение « соли »;
  • crypt() – в отличие от предыдущей эта функция полностью автоматизирует весь процесс, в том числе и генерирование значения соли.

При использовании функции md5() в PHP для задания значения соли используют методы генерации случайных чисел. Например, rand() :

Кроме применения « соли » было разработано еще несколько методов защиты хеша MD5 :

  • MD5 (Unix) – заданное первоначальное значение проходит цикл хеширования около 1000 раз;
  • MD5 (HMAC) – данный метод основан на использовании в хешировании специального ключа;
  • MD5 (Base64) – полученный хеш еще раз кодируются с помощью алгоритма Base64 .

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

Как проверить MD5 хеш-сумму файла в Windows

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

Вариант через расширение для проводника



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

Вариант через командную строку (без установки программ)

В том случае, если вам не хочется устанавливать какие-либо программы, то можно обойтись встроенными средствами Windows, для этого можно воспользоваться утилитой CertUtil.

Для проверки MD5 хеша, достаточно ввести следующую команду:

C:\Users\Admin\Downloads\HashTab_v6.0.0.34_Setup.exe - это путь к тому файлу, хеш-сумму которого мы хотим посчитать.


Как видно на скриншоте, хеш-сумма нашего файла 62130c3964. полностью идентична той, которую мы получили с помощью первого способа.

Вариант через командную строку (с установкой программы)

В случае, если необходимо посчитать хеш-сумму файла через командную строку, мы можем воспользоваться утилитой от Microsoft, которая годится как раз для таких случаев. Скачиваем ее с официального сайта Microsoft и устанавливаем. Для этого надо будет создать какую-либо папку на жестком диске и указать ее в процессе установки. В нашем примере, программа была установлена в папку C:\Program Files (x86)\FCIV. Для того, чтобы посчитать MD5 хеш-сумму файла, нам необходимо запусить командную строку и в ней набрать следующую команду:


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

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

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

Лучшие программы для проверки суммы MD5 и хеширования файлов

Что такое хеширование файлов и для чего оно нужно?

Хэши или контрольные суммы - это математический алгоритм, который отвечает за преобразование любого произвольного блока данных в новую серию символов фиксированной длины. Это хеш-значение всегда будет иметь одинаковую длину вывода, независимо от длины входных данных. Как правило, каждый из файлов, которые мы загружаем из Интернета, проверяется с помощью хеш MD5 / SHA256 чтобы убедиться, что файл не изменен или изменен.

Одной из основных характеристик Hash является то, что они являются очень эффективными алгоритмами и не требуют большой вычислительной мощности для выполнения. Результаты всегда будут в виде строки фиксированной длины, независимо от размера ввода. Например, в случае SHA-256 его длина составляет 64 символа. Кроме того, они необратимы, что делает его более безопасным, поскольку невозможно взять хэш и получить данные, которые его породили.

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

Бесплатная программа, чтобы узнать хеш любого файла

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

Генератор хешей с интеграцией с контекстным меню

Мы начали с бесплатного универсального инструмента для генерации хешей. Он отвечает за автоматизацию генерации 15 различных типов алгоритмов или контрольные суммы. Он поддерживает большинство популярных хэшей, таких как MD5, SHA, BASE64, LM, NTLM, CRC32, ROT13, RIPEMD, ALDER32, HAVAL, WHIRLPOOL и т. Д.

Генератор хэшей

Это приложение также позволяет генерировать хеш как в файле, так и в текстовом вводе. Он имеет интеграцию с контекстным меню Shell, чтобы иметь возможность быстро выполнять операции, просто щелкнув любой файл правой кнопкой. Сгенерированные списки могут быть сохранены в файлах HTML, TEXT, XML и CSV.

Если мы хотим попробовать Hash Generator, мы можем скачать его бесплатно с сайта . Он имеет простой интерфейс и полностью портативен, поэтому не требует установки.

OpenHashTab, с поддержкой 14 типов алгоритмов

Эта программа отвечает за совместимость с 14 различными алгоритмами, которые помогут нам вычислить хэши файлов. Среди них SHA-1, SHA-256 и SHA-512 или MD5. Он также поддерживает десять других различных алгоритмов, которые мы можем активировать или деактивировать в зависимости от наших потребностей.


Приложение позволяет нам проверять хеш-значения, если поставщик файла предоставляет хеш-значение файлу, указывая, совпадает ли его значение со значением файла. Также можно будет экспортировать хеш-значения либо в текстовый файл, либо скопировав их в Windows Буфер обмена. Вместо этого его главный недостаток в том, что он на английском языке.

OpenHashTab - это полностью бесплатная программа с открытым исходным кодом, которую мы можем скачать с Следующая ссылка .

HashMyFiles, быстро вычисляйте хеши MD5 и SHA1

Теперь мы находим небольшую утилиту, которая позволяет нам вычислять хэши MD5 и SHA1, принадлежащие одному или нескольким файлам в нашей системе. Хэши можно легко скопировать в буфер обмена или сохранить в файл TXT, HTML или XML. Также его можно запустить из Windows Проводник контекстное меню для отображения хэшей MD5 и SHA1 выбранных файлов или папок, поскольку оно поддерживает пакетную генерацию.


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

HashMyfiles - это полностью переносимый инструмент, поэтому он не требует какой-либо установки на наш жесткий диск. Он совместим со всеми версиями Windows, как 32-битными, так и 64-битными. Мы можем скачать его бесплатно с здесь .

Hasher Lite, легко проверять целостность файлов

Hasher Lite

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

Hasher Lite - это бесплатное портативное программное обеспечение, которое не требует установки и которое мы можем загрузить с его официальный сайт.

HashTab, обнаруживает любые измененные или поврежденные файлы

Мы сталкиваемся с приложением, которое позволит нам вычислять различные суммы целостности файла, чтобы проверить, правильно ли был загружен файл из Интернета. Для этого он должен сравнить его с подписью, предоставленной на главной странице, и определить, была ли загрузка изменена или повреждена. Также возможно вычислить подписи целостности файлов, которые мы копируем на другое устройство, чтобы гарантировать, что данные копируются правильно.


Как мы уже упоминали, его основная миссия - проверить правильность контрольной суммы файла, что можно сделать, легко интегрировав его в контекстное меню Windows. Он также позволяет сравнивать контрольные суммы двух разных файлов и совместим с наиболее часто используемыми алгоритмами, такими как MD5, SHA-1, SHA-3, SHA-256 и SHA-512.

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

QuickHash, сравнивайте файлы между собой и записывайте их результаты

Это приложение позволяет нам вычислить хэш любого файла на нашем ПК. Для этого используются разные алгоритмы, такие как SHA1, MD5, SHA256, SHA512 и xxHash. Он предлагает нам совместимость с текстовыми данными, файлами, текстом e-mail списки и полные деревья папок. Другой важный вариант - это то, что он позволяет нам сравнивать файлы друг с другом или файловые папки, основанные на алгоритме хеширования, и, таким образом, записывать их результаты.


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

QuickHash - это полностью бесплатное приложение с открытым исходным кодом, доступное для Windows, Linux и macOS. Мы можем скачать его с здесь .

MultiHasher, позволяет проверять наличие вредоносных файлов с помощью VirusTotal.

Перед нами инструмент, который поможет нам проверить и сгенерировать хэш одного пакета. Он имеет до шести различных сигнатур алгоритмов, таких как CRC32, MD5, SHA-1, SHA-256, SHA-384, SHA-512. Его использование простое, потому что достаточно перетащить любой файл или папку для хэша или сгенерировать его для текстовой строки. Чтобы увидеть их, просто наведите на него указатель мыши после завершения расчета.


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

MultiHasher - бесплатное приложение для Windows, которое можно скачать с этой ссылке.

PowerShell, встроенная в Windows утилита для проверки хеш-файлов.

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


Функция проверки хэша файлов PowerShell поддерживает SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5 и RIPEMD160 и может использоваться через Get-filehash и CerUtil. С их помощью мы можем сгенерировать хеш файла. Если мы решим использовать Get-filehash, он будет использовать алгоритм SHA-256, а если мы решим использовать CerUtil, он будет использовать алгоритм MD5. Примером может быть get-filehash c: / file.txt

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

Проект MD5CRK закончился после 17 августа 2004, когда Ван Сяоюнь (Wang Xiaoyun), Фен Дэнгуо (Feng Dengguo), Лай Сюэцзя (Lai Xuejia) и Юй Хунбо (Yu Hongbo) обнаружили уязвимости в алгоритме.

1 марта 2005, Arjen Lenstra, Xiaoyun Wang, и Benne de Weger продемонстрировали построение двух X.509 документов с различными открытыми ключами и одинаковым хешем MD5.

18 марта 2006 исследователь Властимил Клима (Vlastimil Klima) опубликовал алгоритм, который может найти коллизии за одну минуту на обычном компьютере, метод получил название « Алгоритм MD5 [ ]

Cхема работы алгоритма MD5

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

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

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

Для вычислений инициализируются 4 переменных размером по 32 бита и задаются начальные значения шестнадцатеричными числами:

В этих переменных будут храниться результаты промежуточных вычислений. Начальное состояние ABCD называется инициализирующим вектором.

Определим еще функции и константы, которые нам понадобятся для вычислений.

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

Заносим в блок данных элемент n из массива. Сохраняются значения A, B, C и D, оставшиеся после операций над предыдущими блоками (или их начальные значения, если блок первый).

AA = A BB = B CC = C DD = D

Суммируем с результатом предыдущего цикла:

После окончания цикла необходимо проверить, есть ли еще блоки для вычислений. Если да, то изменяем номер элемента массива (n++) и переходим в начало цикла.

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

Результат вычислений находится в буфере ABCD, это и есть хеш. Если вывести слова в обратном порядке DCBA, то мы получим наш MD5 хеш.

Сравнение MD5 и MD4 [ ]

Различия в скорости работы представлены в таблице:

Таблица сравнения скоростей
MD5 MD4
RFC 2,614 сек 37359 Кб/сек 2,574 сек 37940 Кб/сек
OpenSSL 1,152 сек 84771 Кб/сек 0,891 сек 109603 Кб/сек

MD5 хеши [ ]

Хеш содержит 128 бит (16 байт) и обычно представляется как последовательность из 32 шестнадцатеричных чисел.

Несколько примеров хеша:

Пример MD5 хеша для «нулевой» строки:

Криптоанализ [ ]

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

AA1DDABE D97ABFF5 BBF0E1C1 32774244
1006363E 7218209D E01C136D 9DA64D0E
98A1FB19 1FAE44B0 236BB992 6B7A779B
1326ED65 D93E0972 D458C868 6B72746A

Тогда MD5(IV, L1) = MD5(IV, L2) = BF90E670752AF92B9CE4E3E1B12CF8DE.

В 2005 году исследователи Сяоюнь Ван и Хунбо Ю из университета Шандонг в Китае, опубликовали алгоритм, который может найти две различные последовательности 128 байт, которые дают одинаковый MD5 хеш. Одна из таких пар:

d131dd02c5e6eec4693d9a0698aff95c 2fcab58712467eab4004583eb8fb7f89
55ad340609f4b30283e488832571415a 085125e8f7cdc99fd91dbdf280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e2b487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080a80d1e c69821bcb6a8839396f9652b6ff72a70

d131dd02c5e6eec4693d9a0698aff95c 2fcab50712467eab4004583eb8fb7f89
55ad340609f4b30283e4888325f1415a 085125e8f7cdc99fd91dbd7280373c5b
d8823e3156348f5bae6dacd436c919c6 dd53e23487da03fd02396306d248cda0
e99f33420f577ee8ce54b67080280d1e c69821bcb6a8839396f965ab6ff72a70

Каждый их этих блоков дает MD5 хеш равный 79054025255fb1a26e4bc422aef54eb4.

Метод Сяоюнь Вана и Хунбо Ю [ ]

Метод Сяоюнь Вана и Меркле-Дамгарда . Поданный на вход файл, сначала дополняется, так чтобы его длина была кратна 64 байтам, после этого он делится на блоки по 64 байта каждый M0,M1,…,Mn-1. Далее вычисляется последовательность 16-ти байтных состояний s0,…,sn по правилу si+1=f(si,Mi), где f некоторая фиксированная функция. Начальное состояние s0 называется инициализирующим вектором.

Эта атака является разновидностью дифференциальной атаки, которая, в отличие от других атак этого типа, использует целочисленное вычитание а не с вероятностью 2 -37 . К >" width="" height="" />
и >" width="" height="" />
применяется функция сжатия для проверки условий коллизии; далее выбирается произвольное >" width="" height="" />
, модифицируется, вычисляется новый дифференциал, равный нулю с вероятностью 2 -30 , а равенство нулю дифференциала хеш-функции как раз означает наличие коллизии. Оказалось, что найдя одну пару >" width="" height="" />
и >" width="" height="" />
, можно менять лишь два последних слова в >" width="" height="" />
, тогда для нахождения новой пары >" width="" height="" />
и >" width="" height="" />
требуется всего около 2 39 операций хеширования.

Применение этой атаки к MD4 позволяет найти коллизию меньше чем за секунду. Она также применима к другим хеш-функциям, таким как RIPEMD и HAVAL.

Примеры использования [ ]

Многие системы используют базу данных для хранения паролей и существует несколько способов для хранения паролей.

Существует несколько надстроек над MD5 для усиления криптостойкости.

Читайте также: