Создание хеша. Вычисление хэша

MD5 представляет собой своеобразный , появился он довольно давно, еще в 1991 году. Расшифровывается, как Message-Digest algorithm, его созданием занимался профессор Ривест Р. Л. Суть его работы заключается в том, что с его помощью любая информация шифруется согласно формату 128-bit hash, что является контрольной суммой тех или иных данных. При этом подделка такой суммы весьма сложный процесс. Как правило, этот механизм применяется для того, чтобы удостовериться в подлинности данных, которые передаются уже зашифрованными. Представленный здесь инструмент дает вам возможность быстро и без особых знаний зашифровать абсолютно любой текст . Работа данного инструмента основывается на этом же .Вам нужно всего лишь вставить текст в поле и нажать кнопку, в результате вы получите хеш-сумму вашего текста. Используя наш сервис вы можете зашифровать любую информацию, которая имеет текстовое выражение. Это могут быть абсолютно любые тексты, переписка, пароли и прочее. Несомненное преимущество заключается в том, что данный алгоритм не поддается расшифровке, поскольку разработчиком просто не было предусмотрено такую функцию. Поэтому, можно с уверенностью сказать, что такой метод действительно может очень хорошо обезопасить вашу информацию.

Где еще может использоваться алгоритм MD5?

Существует мнение, что использование данного алгоритма позволяет создавать довольно безопасные идентификаторы для отрезков информации. Данная особенность широко использовалась в разнообразных сферах. К примеру, за счет сравнивания MD5 сумм файлов становится возможным поиск повторяющихся файлов на компьютере. При этом само содержимое файлов не используется, просто проверяется сумма. Ярким примером такого использования данного алгоритма можно считать программу dupliFinder, которая была очень распространена, как в Windows, так и под Linux. Кроме того, алгоритм MD5 часто используется для того, чтобы проверить целостность скачиваемых файлов из интернета. Работает это очень просто. Человек, который размещает ссылку на скачивание своего файла в интернете, в описании прилагает MD5 сумму этого файла. А человек, который скачивает его, проверяет совпадает ли заявленная сумма, с той, которую он получил после загрузки.

Ранее очень многие операционные системы, основанные на Linux, использовали данный алгоритм для хранения паролей пользователей в зашифрованном виде. Таким образом, получалось, что пароль знал только сам пользователь, а система проверяла его по MD5 сумме. Хоть сейчас появилось много новых методов шифрования, этот все равно используется во многих системах. Такой же метод использует и наш инструмент для текста. Большинство специалистов по безопасности сходятся в том, что пароль который зашифрованный посредством алгоритма MD5 нельзя никак расшифровать. А взломать его можно только одним способом – путем обыкновенного перебора слов.

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

Что такое хэш-функция и чем её едят?
Хэш-функция предназначена для свертки входного массива любого размера в битовую строку, для MD5 длина выходной строки равна 128 битам. Для чего это нужно? К примеру у вас есть два массива, а вам необходимо быстро сравнить их на равенство, то хэш-функция может сделать это за вас, если у двух массивов хэши разные, то массивы гарантировано разные, а в случае равенства хэшей - массивы скорее всего равны.
Однако чаще всего хэш-функции используются для проверки уникальности пароля, файла, строки и тд. К примеру, скачивая файл из интернета, вы часто видите рядом с ним строку вида - это и есть хэш, прогнав этот файл через алгоритм MD5 вы получите такую строку, и, если хэши равны, можно с большой вероятностью утверждать что этот файл действительно подлинный (конечно с некоторыми оговорками, о которых расскажу далее).
Конкретнее о MD5
Не буду углубляться в историю создания, об этом можно почитать в википедии, однако отмечу что алгоритм был создан профессором Р. Риверстом в 1991 году на основе алгоритма md4. Описан этот алгоритм в RFC 1321
Алгоритм состоит из пяти шагов:
1)Append Padding Bits
В исходную строку дописывают единичный байт 0х80, а затем дописывают нулевые биты, до тех пор, пока длина сообщения не будет сравнима с 448 по модулю 512. То есть дописываем нули до тех пор, пока длина нового сообщения не будет равна [длина] = (512*N+448),
где N - любое натуральное число, такое, что это выражение будет наиболее близко к длине блока.
2)Append Length
Далее в сообщение дописывается 64-битное представление длины исходного сообщения.
3)Initialize MD Buffer
На этом шаге инициализируется буффер
word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10
Как можно заметить буффер состоит из четырех констант, предназначенный для сбора хэша.
4)Process Message in 16-Word Blocks
На четвертом шаге в первую очередь определяется 4 вспомогательные логические функции, которые преобразуют входные 32-битные слова, в, как ни странно, в 32-битные выходные.
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
Также на этом шаге реализуется так называемый «белый шум» - усиление алгоритма, состоящее 64 элементного массива, содержащего псевдослучайные числа, зависимые от синуса числа i:
T[i]=4,294,967,296*abs(sin(i))
Далее начинается «магия». Копируем каждый 16-битный блок в массив X и производим манипуляции:
AA = A
BB = B
CC = C
DD = D
Затем происходят «чудесные» преобразования-раунды, которых всего будет 4. Каждый раунд состоит из 16 элементарных преобразований, которые в общем виде можно представить в виде , которое, в свою очередь, можно представить как A = B + ((A + F(B,C,D) + X[k] + T[i]) <<< s), где
A, B, C, D - регистры
F(B,C,D) - одна из логических функций
X[k] - k-тый элемент 16-битного блока.
T[i] - i-тый элемент таблицы «белого шума»
<<< s - операция циклического сдвига на s позиций влево.
Приводить все раунды не имеет смысла, все их можно посмотреть
Ну и в конце суммируем результаты вычислений:
A = A + AA
B = B + BB
C = C + CC
D = D + DD
5) Output
Выводя побайтово буффер ABCD начиная с A и заканчивая D получим наш хэш.
Надежность
Существует мнение что взломать хэш MD5 невозможно, однако это неправда, существует множество программ подбирающих исходное слово на основе хэша. Абсолютное большинство из них осуществляет перебор по словарю, однако существуют такие методы как RainbowCrack , он основан на генерировании множества хэшей из набора символов, чтобы по получившейся базе производить поиск хэша.
Также у MD5, как у любой хэш-функции, существует такое понятие как коллизии - это получение одинаковых хэшей для разных исходных строк. В 1996 году Ганс Доббертин нашёл псевдоколлизии в MD5, используя определённый инициализирующий буффер (ABCD). Также в 2004 году китайские исследователи Ван Сяоюнь, Фен Дэнгуо, Лай Сюэцзя и Юй Хунбо объявили об обнаруженной ими уязвимости в алгоритме, позволяющей за небольшое время (1 час на кластере IBM p690) находить коллизии. Однако в 2006 году чешский исследователь Властимил Клима опубликовал алгоритм, позволяющий находить коллизии на обычном компьютере с любым начальным вектором (A,B,C,D) при помощи метода, названного им «туннелирование».

Прилагаю собственный пример реализации функции на C#:
md5.rar

Теги: криптография, md5

Бывает, что забудешь код от входной двери, и стоишь, ждешь того, у кого память лучше твоей. Хотя самая лучшая память у ученых. Они еще помнят те времена, когда им за новые знания пятки каленым железом прижигали. Иначе бы они не придумали такую страшную штуку, как расшифровка MD5 . А до этого они умудрились ее еще и зашифровать!

Что такое MD5?

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


  • md5decrypter.com – аналогичный сервис;
  • msurf.ru – данный ресурс имеет простой русскоязычный интерфейс. Его функционал позволяет не только расшифровывать значения хеш-кодов, но и создавать их:


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

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

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

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

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

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

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

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

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

Ее синтаксис:

string crypt (string $str [, string $salt ])

Пример использования:

$hash = crypt("password")

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

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

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

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

  • бесплатность доступа
  • размер словаря
  • поддерживаемые типы хэшей
  • наличие детального криптоанализа (например с помощью Rainbow-таблиц)
    Обновлено 29.03.2013
  1. cmd5.ru

    cmd5.ru один из старейших сервисов для расшифровки хэшей, существует с 2006 года. Преимущества сервиса:

    • уникальная база данных, по объему не имеющая себе равных – 4800 миллиарда записей;
    • огромное количество поддерживаемых типов хэшей для перебора;
    • возможность групповой обработки хэшей;
    • наличие программного клиента для доступа к сервису.

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

    типы хэшей:

    • md5(md5($pass))
    • sha256
    • mysql
    • mysql5
    • md5($pass.$salt);Joomla
    • md5($salt.$pass);osCommerce
    • md5(md5($pass).$salt);Vbulletin;IceBB;Discuz
    • md5(md5($salt).$pass)
    • md5($salt.$pass.$salt);TBDev
    • md5($salt.md5($pass))
    • md5(md5($pass).md5($salt))
    • md5(md5($salt).md5($pass));ipb;mybb
    • sha1($salt.$pass)
    • sha1(lower($username).$pass);SMF
    • sha1(upper($username).’:’.upper($pass));ManGOS
    • sha1($username.’:’.$pass)
    • sha1(salt.pass.’UltimateArena’)
    • MD5(Unix);phpBB3;WordPress
    • Des(unix)
    • mssql
    • md5(unicode)
    • serv-u
    • radmin v2.x
  2. c0llision.net
    free | 295G | md5 md5(md5()) ntlm lm pwdump | distributed network

    c0llision.net – отличный бесплатный сервис, основанный на большой сети по распределенному перебору md5, lm и ntlm хешей. Проект бурно развивается, что не может не радовать. Для добавления хешей в очередь предпочтительней использовать IRC, хотя и имеется веб-интерфейс.

  3. crackstation.net
    free | 190G | LM NTLM md2 md4 md5 md5(md5) md5-half sha1 sha1(sha1_bin()) sha224 sha256 sha384 sha512 ripeMD160 whirlpool MySQL 4.1+ | dic

    В описании сервиса заявлено, что база данных включает все слова из Википедии, а также все общедоступные словари, которые автору удалось найти в интернете. Используемый сервисом словарь доступен для скачивания. Кроме того, работает twitter-бот @plzcrack .

  4. md5.darkbyte.ru
    free | 329M + 48G | md5 | dic

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

  5. tmto.org
    free | 36G | md5 lm ntlm sha1 | rainbow tables

    После продолжительного оффлайна проект TMTO (Time-Memory Trade Off Cracking) вновь стал доступен. База стала еще больше, появились новые алгоритмы, сервис остался бесплатным, как и прежде. Радует высокая скорость расшифровки благодаря постоянному росту кластера. За один раз можно отправить неограниченное количество хэшей для расшифровки.

  6. hashcracking.ru
    free & auth | 3M | md5 mysql mysql5 sha1 | dic rainbow tables

    hashcracking.ru по-прежнему в строю, позволяет проводить поиск mysql и mysql5 паролей, брутить по маске, есть возможность перебора по словарю с указанием salt.

  7. www.md5decrypter.co.uk
    free | 8,7G | md5 | dic

    Неплохой бесплатный сервис с приличной базой. За один раз можно отправить на обработку 12 md5-хэшей. Среди минусов можно отметить, что используется лишь проверка по словарю из найденных паролей.

19/01/2016

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

03/11/2015

MultiHasher - лёгкая программа созданная португальскими компьютерщиками для вычисления хеша любых документов. Данный калькулятор может, за раз, вычислить несколько значений хеша для одного файла. Работает с алгоритмами CRC32, SHA-1, SHA-256, SHA-384, SHA-512 и MD5. Так же есть функция для проверки файла с помощью VirusTotal. Программа интегрируется в проводник Windows, что упрощает работу и вычисления хеша в разы. Ещё для простоты работы с программой включается функция Drag and Drop, для быстрого добавления файлов или даже папки в очередь обработки. Программа мултиязычная и имеет русский язык, что дает ей преимущество перед дру...

20/04/2015

HashTools - полезная, простая в использовании утилита, помогающая достаточно быстро определить конечную контрольную сумму файлов. Утилита полезна для пользователей, которые хотят проверить целостность имеющихся файлов. Приложение имеет достаточно простой интерфейс, что позволяет достаточно быстро выбрать файл либо нужный каталог. Затем необходимо задать алгоритм для определения контрольной суммы. HashTools поддерживает генерирование контрольных сумм посредством SHA256, SHA384, MD5, SHA1, CRC32, SHA512. Позволяет сохранять отчет можно в виде файла с SFV-расширением. Пользователь может выбирать файлы для обработки, перетаскивая...

26/08/2014

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