Как сделать хэш файла

Обновлено: 08.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

Как можно заметить, после хеша следует пробел и имя файла (в случае стандартного ввода – указывается тире), чтобы показать только хеш, можно использовать к команде добавить | awk '' или | cut -d" " -f1:

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

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

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

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

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

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

К примеру, нам нужно рассчитать sha256 хеш для строки 'HackWare'; а затем для полученной строки (хеша), рассчитать хеш md5. Задача кажется очень тривиальной:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример кода, который подсчитывает MD5 хеш с 1000 итераций:

  • HackWare – строка для хеширования
  • 1000 – количество итераций
  • md5sum – используемая функция хеширования

Онлайн сервис определения хешей

Связанные статьи:

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


Рекомендуется Вам:

6 комментариев to Хеши: определение типа, подсчёт контрольных сумм, нестандартные и итерированные хеши

не работает при атаке на рукопожатия пишет

hashcat (v4.0.1) starting…

зашел по ссылке там какие то изменения произошли, скачал что то там новое. установил но так и не понял что это за новость такая***((((

конвертировал по схеме

wpaclean in .cap>

hashcat -m 2500 -a 3 capture.hccap


Alexey :

На этом сайте уже две инструкции с использованием нового формата:

Добрый день народ. Простите что не по теме. На каком дистрибьютиве основана Kali Linux 2018.1 ?

Я так понимаю , что дебиан, но какой 8.10 или уже 9й?


Alexey :

Самое важное практическое следствие из всего этого: если у вас установлен Rolling релиз Kali Linux любой давности (хоть даже в 2016 году), то вам не нужно переустанавливать систему при выходе новых выпусков (например, при появлении Kali Linux 2018.2), а достаточно просто обновить систему и вы получите у себя самую последнюю версию ОС.

Спасибо, теперь понятно. А кали может подхватывать репы от дебиан для установки программ?


Alexey :

Официально крайне не рекомендуется добавлять какие-либо сторонние источники приложений:

Примеры хеширования md5, sha1

В Python хеш-функция принимает вводную последовательность с переменной длиной в байтах и конвертирует ее в последовательность с фиксированной длиной. Данная функция односторонняя.

Содержание статьи

Что такое хеш-функция Python

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

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

В настоящее время существует большое количество алгоритмов хеширования для проверки целостности различных файлов, которые мы загружаем через Интернет, передаем другим пользователям, и мы даже можем проверить, был ли изменен определенный файл или нет. Благодаря бесплатным инструментам, таким как QuickHash, мы сможем генерировать хеши различных файлов, используя различные алгоритмы хеширования, такие как SHA-3 и даже SHA2-512. Сегодня в этой статье мы собираемся объяснить, что такое хеш, какие из них используются чаще всего и как мы можем получить хеш SHA3 файла в Windows.

Что такое хеш и для чего его можно использовать?

Простое объяснение того, что такое хеш, заключается в том, что это уникальный отпечаток цифровых данных, если данные определенного файла изменяются, хеш полностью изменится. Благодаря хешам мы можем проверить, был ли файл изменен, и мы даже можем проверить целостность файлов при их отправке через Интернет или загрузке с разных серверов. В настоящее время у нас есть много алгоритмов хеширования, некоторые из них уже считаются небезопасными, потому что были обнаружены коллизии (при генерации хеша двух разных файлов получается один и тот же хеш), таких как MD5 или SHA1, однако сегодня у нас есть алгоритмы безопасных хешей, например SHA2-256, SHA2-512 и даже последний SHA3, который у нас уже есть.

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


В этом случае с помощью инструмента, который может генерировать хеш-код, поддерживающий алгоритм MD5 или SHA-1, мы могли бы сравнить его с тем, что предлагает нам производитель. Если он совпадает, мы проверим его целостность и без всяких опасений сможем продолжить установку прошивки. В противном случае мы узнаем, что это неправильно, и не должны устанавливать его. Примером программы, которую мы можем использовать, является QuickHash, о которой мы поговорим позже.

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

QuickHash: легко генерировать хеши SHA3 или SHA2-512

QuickHash это данные с открытым исходным кодом Хеширования инструмент для LinuxWindows и Apple Мак ОС операционных систем, имеет очень удобный и простой в использовании графический пользовательский интерфейс. В настоящее время этот инструмент поддерживает следующие алгоритмы хеширования: MD5, SHA1, SHA-3 (256 бит), SHA2-256, SHA2-512, xxHash, Blake2B (256 бит) и Blake3, поэтому это действительно полноценный инструмент. Как будто всего этого было недостаточно, мы должны указать, что он полностью бесплатный, и его развитие поддерживается за счет пожертвований людей, которые его используют.


Загрузка, запуск и главный экран

Чтобы загрузить инструмент QuickHash, мы должны щелкнуть следующее ссылка для скачивания QuickHash бесплатно . Как мы обсуждали ранее, мы можем использовать версию для Windows, Linux и MacOS. В моем случае я собираюсь использовать последнюю версию, доступную для Windows, конкретная версия - 3.2.0. После загрузки мы найдем файл в формате ZIP, который мы распакуем в папку.

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

При первом запуске появится такой экран:


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

Фиолетовым цветом показаны алгоритмы, которые мы можем использовать для получения наших хэшей, чтобы выделить алгоритмы SHA2-512, SHA-3, а также BLAKE3.

Разделы Текст, Файл, Сравнение двух файлов QuickHash

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


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

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


Теперь мы собираемся сравнить два файла, используя алгоритм SHA2-512. Для этого обратимся к Сравнить два файла . Сначала мы приведем пример с двумя разными файлами. Мы начинаем с выбора алгоритма, а затем двух файлов. Мы бы поместили первый файл в Выберите файл A и второй файл для сравнения в Выберите файл B. Далее мы даем Сравнить сейчас и НЕСООТВЕТСТВИЕ появится красным, указывая на то, что они разные.


Напротив, если мы возьмем два одинаковых файла и повторим процесс, выполнив те же шаги и дав Сравните сейчас, получаем такой результат:


Здесь говорится СООТВЕТСТВИЕ! , что означает, что они совпадают.

Разделы QuickHash для файлов, копирования и сравнения двух папок

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


Теперь настала очередь Копировать раздел, который используется для копирования файлов и проверки правильности его выполнения путем проверки его хэша. Начнем как обычно, с выбора алгоритма. Затем с левой стороны мы выбираем исходную папку, которую хотим скопировать. Справа мы выбираем место назначения, в этом случае я создал пустую папку под названием Test. Когда закончите, нажмите Идти! для запуска процесса.


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


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


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


Здесь мы видим маршруты обоих с соответствующими хешами, и видно, что они совпадают.


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


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

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


Криптографические хеш-функции — незаменимый и повсеместно распространенный инструмент, используемый для выполнения целого ряда задач, включая аутентификацию, проверку целостности данных, защиту файлов и даже обнаружение зловредного ПО. Существует масса алгоритмов хеширования, отличающихся криптостойкостью, сложностью, разрядностью и другими свойствами. Считается, что идея хеширования принадлежит сотруднику IBM, появилась около 50 лет назад и с тех пор не претерпела принципиальных изменений. Зато в наши дни хеширование обрело массу новых свойств и используется в очень многих областях информационных технологий.

Что такое хеш?

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

Как работает хеш?

Например, мое имя — Brian — после преобразования хеш-функцией SHA-1 (одной из самых распространенных наряду с MD5 и SHA-2) при помощи онлайн-генератора будет выглядеть так: 75c450c3f963befb912ee79f0b63e563652780f0. Как вам скажет, наверное, любой другой Брайан, данное имя нередко пишут с ошибкой, что в итоге превращает его в слово brain (мозг). Это настолько частая опечатка, что однажды я даже получил настоящие водительские права, на которых вместо моего имени красовалось Brain Donohue. Впрочем, это уже другая история. Так вот, если снова воспользоваться алгоритмом SHA-1, то слово Brain трансформируется в строку 97fb724268c2de1e6432d3816239463a6aaf8450. Как видите, результаты значительно отличаются друг от друга, даже несмотря на то, что разница между моим именем и названием органа центральной нервной системы заключается лишь в последовательности написания двух гласных. Более того, если я преобразую тем же алгоритмом собственное имя, но написанное уже со строчной буквы, то результат все равно не будет иметь ничего общего с двумя предыдущими: 760e7dab2836853c63805033e514668301fa9c47.

Впрочем, кое-что общее у них все же есть: каждая строка имеет длину ровно 40 символов. Казалось бы, ничего удивительного, ведь все введенные мною слова также имели одинаковую длину — 5 букв. Однако если вы захешируете весь предыдущий абзац целиком, то все равно получите последовательность, состоящую ровно из 40 символов: c5e7346089419bb4ab47aaa61ef3755d122826e2. То есть 1128 символов, включая пробелы, были ужаты до строки той же длины, что и пятибуквенное слово. То же самое произойдет даже с полным собранием сочинений Уильяма Шекспира: на выходе вы получите строку из 40 букв и цифр. При всем этом не может существовать двух разных массивов данных, которые преобразовывались бы в одинаковый хеш.

Вот как это выглядит, если изобразить все вышесказанное в виде схемы:

Как работает хеширование

Для чего используется хеш?

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

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

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

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

Как при помощи хеша ловить вирусы?

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

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

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