Md5 класс

Контрольные суммы файла

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

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

Мы не будем углубляться в техническую реализацию, достаточно знать, что применяя определенный алгоритм высчитывает некое значение однозначно описывающее данный файл. Оно всегда одинаковое для одних и тех же данных и называется контрольной суммой или хешем. Хотя самих алгоритмов хеширования существует множество, вот некоторые из наиболее часто встречающихся: MD5, CRC32, SHA-1, SHA256, BTIH.

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

История и уязвимости MD5

MD5 был изобретен Рональдом Ривестом, но это только один из трех его алгоритмов. Первой хэш-функцией, которую он разработал, была MD2 в 1989 году, которая была построена для 8-битных компьютеров. Хотя MD2 все еще используется, он не предназначен для приложений, которым требуется высокий уровень безопасности, поскольку было показано, что он уязвим для различных атак.

Затем MD2 был заменен на MD4 в 1990 году. MD4 был создан для 32-разрядных машин и был намного быстрее, чем MD2, но, как было установлено, имел слабые стороны, и в настоящее время он считается устаревшим в Internet Engineering Task Force. MD5 был выпущен в 1992 году и был также построен для 32-битных машин. MD5 не так быстр, как MD4, но считается более безопасным, чем предыдущие реализации MDx.

Хотя MD5 более безопасен, чем MD2 и MD4, другие криптографические хеш-функции, такие как SHA-1, были предложены в качестве альтернативы, так как было показано, что MD5 также имеет недостатки безопасности .

  Концентратор, коммутатор и маршрутизатор: в чем разница

У Института разработки программного обеспечения Университета Карнеги-Меллона есть что сказать о MD5:

Методы

Освобождает все ресурсы, используемые классом HashAlgorithm.Releases all resources used by the HashAlgorithm class.

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданного массива байтов.Computes the hash value for the specified byte array.

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданной области заданного массива байтов.Computes the hash value for the specified region of the specified byte array.

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданного объекта Stream.Computes the hash value for the specified Stream object.

(Унаследовано от HashAlgorithm)

Асинхронно вычисляет хэш-значение для заданного объекта Stream.Asynchronously computes the hash value for the specified Stream object.

(Унаследовано от HashAlgorithm)

Освобождает все ресурсы, используемые текущим экземпляром класса HashAlgorithm.Releases all resources used by the current instance of the HashAlgorithm class.

(Унаследовано от HashAlgorithm)

Освобождает неуправляемые ресурсы, используемые объектом HMACMD5, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the HMACMD5 and optionally releases the managed resources.

Освобождает неуправляемые ресурсы, используемые объектом HMAC, и, если допускается изменение ключа, опционально освобождает управляемые ресурсы.Releases the unmanaged resources used by the HMAC class when a key change is legitimate and optionally releases the managed resources.

(Унаследовано от HMAC)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)

Передает данные из объекта в HMAC-алгоритм для вычисления HMAC.Routes data written to the object into the HMAC algorithm for computing the HMAC.

Если переопределено в производном классе, передает данные, записанные в объект, в HMAC-алгоритм для вычисления значения HMAC.When overridden in a derived class, routes data written to the object into the HMAC algorithm for computing the HMAC value.

(Унаследовано от HMAC)

Передает данные из объекта в HMAC-алгоритм для вычисления HMAC.Routes data written to the object into the HMAC algorithm for computing the HMAC.

Передает данные из объекта в HMAC-алгоритм для вычисления HMAC.Routes data written to the object into the HMAC algorithm for computing the HMAC.

(Унаследовано от HMAC)

Завершает вычисление HMAC после обработки последних данных алгоритмом.Finalizes the HMAC computation after the last data is processed by the algorithm.

Если переопределено в производном классе, завершает вычисление HMAC после обработки последних данных алгоритмом.When overridden in a derived class, finalizes the HMAC computation after the last data is processed by the algorithm.

(Унаследовано от HMAC)

Сбрасывает хэш-алгоритм в исходное состояние.Resets the hash algorithm to its initial state.

Инициализирует новый экземпляр реализации по умолчанию класса HMAC.Initializes an instance of the default implementation of HMAC.

(Унаследовано от HMAC)

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Вычисляет хэш-значение для заданной области входного массива байтов и копирует указанную область входного массива байтов в заданную область выходного массива байтов.Computes the hash value for the specified region of the input byte array and copies the specified region of the input byte array to the specified region of the output byte array.

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданной области заданного массива байтов.Computes the hash value for the specified region of the specified byte array.

(Унаследовано от HashAlgorithm)

Пытается вычислить хэш-значение для заданного массива байтов.Attempts to compute the hash value for the specified byte array.

(Унаследовано от HashAlgorithm)

Пытается завершить вычисление HMAC после обработки последних данных алгоритмом HMAC.Attempts to finalize the HMAC computation after the last data is processed by the HMAC algorithm.

Пытается завершить вычисление HMAC после обработки последних данных алгоритмом HMAC.Attempts to finalize the HMAC computation after the last data is processed by the HMAC algorithm.

(Унаследовано от HMAC)

Типы MD5

Ведущий тип MD5

.MD5

Файл Ext: .md5
Категория: MD5 Checksum File

Расширение MD5 Файл в основном используется в качестве контрольных сумм файлов. Он используется для проверки целостности диска, образ, или загруженного файла. Рон Ривест был первым, чтобы разработать его в 1991 году.

Программист: Ron Rivest
Дивизион: Необычные файлы
Местоположение: HKEY_CLASSES_ROOT\.md5

Программные обеспечения, открывающие MD5 Checksum File:

TeraCopy, разработчик — Code Sector

Windows

ExactFile, разработчик — StudyLamp Software

Windows

RapidCRC, разработчик — Open Source

Windows

MD5Checker, разработчик — TSoft

Windows

MD5summer, разработчик — Luke Pascoe

Windows

CheckSum+, разработчик — Pescados Software

Mac

Другие описания в формате MD5

.MD5

Файл Ext: .md5
Категория: Samsung Galaxy Firmware Archive

Расширение MD5 файл связан с семейством Samsung Galaxy смартфонов. Он хранит архив с прошивкой для телефонов Galaxy.

Программист: Samsung Electronics
Дивизион: Сжатые файлы

Программы, открывающие файлы Samsung Galaxy Firmware Archive :

Samsung Kies, разработчик — Samsung Electronics

Совместимый с:

Windows
Mac

Odin, разработчик — Samsung Electronics

Совместимый с:

Windows

Методы

Освобождает все ресурсы, используемые классом HashAlgorithm.

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданного массива байтов.

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданной области заданного массива байтов.

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданного объекта Stream.

(Унаследовано от HashAlgorithm)

Асинхронно вычисляет хэш-значение для заданного объекта Stream.

(Унаследовано от HashAlgorithm)

Создает экземпляр реализации по умолчанию хэш-алгоритма MD5.

Создает экземпляр заданной реализации хэш-алгоритма MD5.

Освобождает все ресурсы, используемые текущим экземпляром класса HashAlgorithm.

(Унаследовано от HashAlgorithm)

Освобождает неуправляемые ресурсы, используемые объектом HashAlgorithm, а при необходимости освобождает также управляемые ресурсы.

(Унаследовано от HashAlgorithm)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)

При переопределении в производном классе передает данные, записанные в объект, на вход хэш-алгоритма для вычисления хэша.

(Унаследовано от HashAlgorithm)

Передает записываемые в объект данные в хэш-алгоритм для вычисления хэша.

(Унаследовано от HashAlgorithm)

Вычисляет хэш данных с помощью алгоритма MD5.

Вычисляет хэш данных с помощью алгоритма MD5.

Вычисляет хэш данных с помощью алгоритма MD5.

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

(Унаследовано от HashAlgorithm)

Сбрасывает хэш-алгоритм в исходное состояние.

(Унаследовано от HashAlgorithm)

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

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

(Унаследовано от HashAlgorithm)

Вычисляет хэш-значение для заданной области заданного массива байтов.

(Унаследовано от HashAlgorithm)

Пытается вычислить хэш-значение для заданного массива байтов.

(Унаследовано от HashAlgorithm)

Пытается вычислить хэш данных с помощью алгоритма MD5.

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

(Унаследовано от HashAlgorithm)

Хеши необходимо заключать в одинарные кавычки!

Хеши могу включать в себя специальные символы, которые имеют для оболочки специальное значение

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

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

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

Комментарии

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

Размер хеша для MD5 алгоритма составляет 128 бит.

ComputeHashМетоды MD5 класса возвращают хэш как массив размером 16 байт

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

Примечание

Из-за проблем с MD5/SHA1 Корпорация Майкрософт рекомендует использовать SHA256 или SHA512. SHA256Вместо класса рекомендуется использовать класс или SHA512 класс MD5 . Используйте MD5 только для обеспечения совместимости с устаревшими приложениями и данными.

Как подсчитать контрольную сумму файла из консоли Windows

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

Например, чтобы посчитать контрольную сумму SHA1 с помощью утилиты CertUtil нужно запустить командную строку Windows 10, 8 или Windows 7 и ввести следующую команду:

certutil -hashfile путь_к_файлу алгоритм

Вот пример ее работы через несколько минут:

Считаем контрольную сумму в PowerShell

PowerShell — это средство автоматизации от Microsoft, с интерфейсом командной строки и языка сценариев, работает и включена в состав Windows 8 и новее.

Чтобы вычислить контрольную сумму файла необходимо выполнить команду Get-FileHash указав через пробел имя файла и алгоритм вычисления контрольной суммы:

 Get-FileHash "Disk:\Full Path to file\File Name.Extension" -Algorithm SHA1

Обратите внимание, что полный путь и имя файла лучше заключить в двойные кавычки

По-умолчанию, если не указать тип контрольной суммы, то будет посчитана SHA-256.

Для алгоритмов вычисления контрольной суммы в Windows PowerShell поддерживаются следующие значения:

  • SHA1
  • SHA256 (по умолчанию)
  • SHA384
  • SHA512
  • MD5

Для оформления вывода в виде списка можно использовать параметр | Format-List. Например:

 Get-FileHash "Disk:\Full Path to file\File Name.Extension" | Format-List

Тогда результат работы будет выглядеть так:

Подробнее об использовании команды Get-FileHash можно прочитать на официальном сайте Microsoft — https://docs.microsoft.com/ru-ru/powershell/module/microsoft.powershell.utility/get-filehash

Какой алгоритм вычисления контрольных сумм самый правильный

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

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

Для проверки целостности файла вам следует использовать тот, который предоставляет издатель. Если у вас на выбор есть несколько контрольных сумм, то лучше выбрать в следующей последовательности MD5, SHA-1, SHA-256, последний вариант является более предпочтительным.

HAITI

HAITI (HAsh IdenTifIer) — это инструмент командной строки (и библиотека) для идентификации типа заданного хеша. Библиотека особенно хороша для написания скриптов, поскольку не нужно заключать инструмент командной строки в подпроцесс.

Особенности:

  • Определение типов 382+ хешей
  • Поддержка современных алгоритмов (SHA3, Keccak, Blake2 и прочее)
  • Краткая информация по использованию хеша с Hashcat и John the Ripper
  • Инструмент командной строки и библиотека
  • Цветной вывод

Полный список опций программы и инструкции по установке вы найдёте в карточке программы: https://kali.tools/?p=6638

Использование программы очень простое — укажите ваш хеш после имени программы:

haiti ОПЦИИ 'ХЕШ'

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

Например:

haiti 7c2dc1d743735d4e069f3bda85b1b7e9172033dfdd8cd599ca094ef8570f3930c3f2c0b7afc8d6152ce4eaad6057a2ff22e71934b3a3dd0fb55a7fc84a53144e

Вывод:

SHA-512  
SHA3-512  
SHA3-512  
Keccak-512  
BLAKE2-512 
Whirlpool  
Salsa10
Salsa20
Skein-512 
Skein-1024(512)

Среди вывода есть и правильный ответ: SHA3-512

В выводе HC — это сокращение для Hashcat, а последующие цифры (например, 1700, 17600 и так далее) это номера режимов в данной программе.

JtR — это сокращение от John the Ripper, а последующие строки — это название алгоритмов хешей для взлома в данной программе (raw-sha512, raw-sha3 и так далее).

Цвет очень хорошо улучшает читаемость вывода, особенно если он обширный. Если вы хотите отключить цветной вывод, то используйте опцию —no-color:

haiti --no-color 412ef78534ba6ab0e9b1607d3e9767a25c1ea9d5e83176b4c2817a6c

Хотя зачастую вывод содержит более одного предположения о типе хеша, по умолчанию из него исключены алгоритмы с солью. Чтобы показать все возможные алгоритмы хеширования, в том числе с использованием соли используйте опцию -e или —extended:

haiti -e 7c2dc1d743735d4e069f3bda85b1b7e9172033dfdd8cd599ca094ef8570f3930c3f2c0b7afc8d6152ce4eaad6057a2ff22e71934b3a3dd0fb55a7fc84a53144e

Если вы хотите только узнать тип хеша и информация о режимах hashcat и john the ripper для вас является излишней, то вы можете указать опцию —short для укороченного вывода:

haiti --short f1eff5c0368d10311dcfc419

Optimisation Tricks (Multi-Buffer)

Rotate Emulation in SIMD

A number of SIMD ISAs don’t have a rotate instruction. The classic way to emulate this is via two bit shifts plus a bitwise OR. There may be a better approach however.

Two buffers on 128-bit SIMD: shuffle + 64-bit shift

If you’re only computing 2x MD5 streams on SSE (which supports 4x), you can place the active lanes at positions 0 and 2. The rotate can be emulated by duplicating these lanes to positions 1 and 3, then doing a 64-bit right-shift.
In other words, the following two functions give the same result:

uint32_t rotl_obvious(uint32_t value, int amount) {
	return (value << amount) | (value >> (32-amount));
}

uint32_t rotl_dupe(uint32_t value, int amount) {
	uint64_t tmp = value * 0x100000001ULL;
	return tmp >> (32-amount);
}

Implemented in SIMD, reduces the process from 4 instructions to 2 instructions:

; obvious rotate
movdqa tmp, a     ; tmp = a
psrld  a, n       ; a >>= n
pslld  tmp,32-n  ; tmp <<= 32-n
por    a, tmp     ; a |= tmp

; duplicate method
pshufd a, a, 0b10100000 ; duplicate lanes 0/2 to lanes 1/3
psrlq  a,32-n    ; a >>= 32-n

Multiply-add

Some ISAs provide an integer multiply-accumulate instruction, which can be equivalent to a left-shift + add instruction. Unfortunately, multiplication often has high latency, so usually isn’t worthwhile. If you do decide to go this route however, consider accumulating with the input instead of the right-shifted value, to shorten the dependency chain (see above).

История и криптоанализ

MD5 — один из серии алгоритмов дайджеста сообщений , разработанных профессором Рональдом Ривестом из Массачусетского технологического института (Rivest, 1992). Когда аналитическая работа показала, что предшественник MD5, MD4, вероятно, был небезопасен, Ривест разработал MD5 в 1991 году как безопасную замену. ( Ганс Доббертин действительно позже обнаружил слабые места в MD4.)

В 1993 году Ден Бур и Босселэрс дали ранний, хотя и ограниченный, результат обнаружения « псевдоколлизии » функции сжатия MD5 ; то есть два разных вектора инициализации, которые производят идентичный дайджест.

В 1996 г. Доббертин объявил о коллизии функции сжатия MD5 (Доббертин, 1996). Хотя это не была атака на полную хеш-функцию MD5, криптографы достаточно близко рекомендовали перейти на замену, такую ​​как SHA-1 или RIPEMD-160 .

Размер хеш-значения (128 бит) достаточно мал, чтобы представить себе атаку по случаю дня рождения . MD5CRK был распределенным проектом, начатым в марте 2004 года, чтобы продемонстрировать, что MD5 практически небезопасен, обнаружив коллизию с помощью атаки дня рождения.

MD5CRK закончился вскоре после 17 августа 2004 года, когда о конфликтах для полного MD5 объявили Сяоюнь Ван , Дэнго Фэн, Сюэцзя Лай и Хунбо Ю. Сообщалось, что их аналитическая атака на кластер IBM p690 заняла всего один час .

1 марта 2005 года Арьен Ленстра , Сяоюнь Ван и Бенн де Вегер продемонстрировали создание двух сертификатов X.509 с разными открытыми ключами и одним и тем же значением хеш-функции MD5, что явилось очевидным практическим конфликтом. В конструкцию включены закрытые ключи для обоих открытых ключей. Несколькими днями позже Властимил Клима описал улучшенный алгоритм, способный создавать коллизии MD5 за несколько часов на одном ноутбуке. 18 марта 2006 года Клима опубликовал алгоритм, который может обнаруживать столкновение в течение одной минуты на одном ноутбуке, используя метод, который он называет туннелированием.

Были опубликованы различные связанные с MD5 . В 2009 году киберкомандование США использовало хеш-значение MD5 в заявлении о миссии как часть своей официальной эмблемы.

24 декабря 2010 года Тао Се и Дэнго Фэн объявили о первом опубликованном конфликте MD5 одиночных блоков (512 бит). (Предыдущие обнаружения столкновений основывались на многоблочных атаках.) По «соображениям безопасности» Се и Фэн не раскрыли новый метод атаки. Они бросили вызов криптографическому сообществу, предложив вознаграждение в размере 10 000 долларов США первому обнаружившему другую 64-байтовую коллизию до 1 января 2013 года. Марк Стивенс ответил на этот вызов и опубликовал конфликтующие одноблочные сообщения, а также алгоритм построения и источники.

В 2011 году был утвержден информационный RFC 6151 для обновления соображений безопасности в MD5 и HMAC-MD5.

Что такое хеширование

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

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

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

Средства платформы

В версии платформы 8.3 наконец-то был реализован штатный механизм хеширования данных, который позволяет хешировать строки и файлы при помощи алгоритмов MD5, SHA1, SHA256 и CRC32.

Делается это просто:

&НаКлиенте
Процедура Хеширование(Команда)
Сообщить(MD5ХешСтрока(ТестСтрока));
Сообщить(MD5ХешФайл(ИмяФайла));
КонецПроцедуры

&НаСервере
Функция MD5ХешСтрока(тСтрока)
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);

Хеш.Добавить(тСтрока);

Возврат Хеш.ХешСумма;
КонецФункции

&НаСервере
Функция MD5ХешФайл(тСтрока)
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);

Хеш.ДобавитьФайл(тСтрока);

Возврат Хеш.ХешСумма;
КонецФункции

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
&НаКлиенте
Процедура Хеширование(Команда)
Сообщить(MD5ХешСтрока(ТестСтрока));
Сообщить(MD5ХешФайл(ИмяФайла));
КонецПроцедуры
 
&НаСервере
Функция MD5ХешСтрока(тСтрока)
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);

Хеш.Добавить(тСтрока);

Возврат Хеш.ХешСумма;
КонецФункции
 
&НаСервере
Функция MD5ХешФайл(тСтрока)
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);

Хеш.ДобавитьФайл(тСтрока);

Возврат Хеш.ХешСумма;
КонецФункции

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

Добавляем вычисление SHA-1 и MD5 хешей в контекстное меню файлов

Доброго времени суток! Как часто вы проверяете скачиваемые файлы на равенство хеш-сумм? Я — никогда. Но сегодня я почему-то решил порвать с этой порочной практикой и сделать свою жизнь более безопасной. Согласитесь, основная причина не сравнивать хеш-сумму файла — это лень. Нужно искать какую-нибудь программу, запускать ее, натравливать на файл, и это просто уйма действий. Как можно упростить эту процедуру? Я не придумал ничего лучше, чем добавить в контекстное меню файла опцию «Посчитать хеш». Интересующимся предлагаю краткую инструкцию.

Установка программы

Берем отсюда File Checksum Integrity Verifier utility — консольную утилиту для вычисления и сравнения хешей MD5 и SHA-1 от Microsoft. Там же можно прочитать, что это за зверь и с чем его едят. Скачанный файл Windows-KB841290-x86-ENU.exe можно открыть как zip архив и увидеть, что он содержит два файла: собственно fciv.exe и ReadMe.txt, содержащий справку к утилите. Файл ReadMe нас не интересует, а fciv.exe нужно поместить в одну из директорий, прописанных в переменной PATH, дабы вызывать ее из командной строки без указания полного пути. Я поместил в system32. Проверить, что утилита работает, можно, натравив ее из командной строки на любой файл: fciv -md5 C:\test.dat — для вычисления MD5 fciv -sha1 C:\test.dat — для вычисления SHA-1

Создание элемента контекстного меню

Для расширения контекстного меню файлов нужно будет немного подшаманить в реестре. Запускаем regedit.exe, идем в HKEY_CLASSES_ROOT\* — это раздел, отвечающий за контекстное меню всех типов файлов. В разделе shell создаем подраздел с любым именем (у меня это fciv_md5). В параметре по умолчанию прописываем желаемое название пункта меню (напрмер, Compute MD5). У созданного подраздела (fciv_md5) создаем еще один подраздел с именем command, и у него в параметре по умолчанию прописываем магическую строчку: cmd.exe /k fciv -md5 «%1»

Строка предписывает запустить cmd.exe с командой fciv -md5 «%1» и отобразить результат. Для добавления пункта для вычисления SHA-1 проделываем ту же последовательность действий, меняя лишь названия. Команда в этом случае выглядит так:

cmd.exe /k fciv -sha1 «%1»

Должно получиться что-то вроде этого:

Все вышеперечисленное одним файлом:

Windows Registry Editor Version 5.00 @=»Compute MD5″ @=»cmd.exe /k fciv -md5 \»%1\»» @=»Compute SHA» @=»cmd.exe /k fciv -sha1 \»%1\»»

Вычисляем SHA-1 хеш двумя кликами мыши:

Раз: Два:

Всем добра и совпадающих хешей!

UPD. Как подсказывает navion в первом комментарии, можно обойтись без установки FCIV и использовать встроенную утилиту CertUtil. В таком случае п.1 становится неактуальным, а команда в regedit меняется на: для MD5: cmd.exe /k CertUtil -hashfile «%1» MD5 для SHA1: cmd.exe /k CertUtil -hashfile «%1» SHA1, и, кроме того, появляется возможность вычислять SHA256 хеш: cmd.exe /k CertUtil -hashfile «%1» SHA256

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

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

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

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

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

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

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

string crypt ( string $str  )

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

$hash = crypt('password')

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

<?php
$pass = 'admin';
function salt() {
    $s = '';
    $length = rand(7,12); // длина соли
    for($i=0; $i<$length; $i++) {
         $s .= chr(rand(33,126));//случайный символ из таблицы ASCII 
    }
    return $s;
}
echo md5(md5($pass).salt());

?>

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

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

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

АМАнтон Малаховавтор

Резюме файла MD5

Эти файлы MD5 можно просматривать с помощью восемь существующего (-их) прикладных (-ого) программных (-ого) средств (-а), как правило, TeraCopy, разработанного Code Sector. Оно связано с два основным (-и) типом (-ами) файла (-ов), но часто встречается в формате MD5 Checksum File.
Большинство файлов MD5 относятся к Uncommon Files, однако они также могут относится к Compressed Files.

Просматривать файлы MD5 можно с помощью операционных систем Windows и Mac. Они обычно находятся на настольных компьютерах (и ряде мобильных устройств) и позволяют просматривать и иногда редактировать эти файлы.

Рейтинг популярности файлов MD5 составляет «Низкий», что означает, что данные файлы встречаются редко.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector