Ищете кроссплатформенную / переносимую программу, которая выбрасывает криптографические хеши файлов

Я ищу программу, которая должна быть переносимой с исходного кода в Windows и Linux (например, ANSI C и т. Д.), Которая генерирует криптографические хеши, такие как MD5, SHA и т. Д., А также CRC32 файла / списка файлов, передаваемых в него.

Я буду запускать этот исполняемый файл на терабайтах файлов, генерируя их сигнатуры SHA, MD5 и CRC32 (и многие другие в будущем), поэтому скорость важна.

Я имел в виду именно то, что ReHash - это ReHash, ReHash.

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

Будучи не экспертом в криптографии и просто ища решение для черного ящика, которое просто дает мне хеш-коды, которые я хочу, не требуя от меня больше, чем компиляции некоторого кода, я задавался вопросом, нет ли ничего лучше?

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

Я буду запускать этот исполняемый файл на терабайтах файлов, генерировать их сигнатуры SHA, MD5 и CRC32 (и в будущем) и обрабатывать все это из кода Python, поэтому было бы предпочтительнее что-то совместимое с Python, но не за счет C как скорость.

2 ответа

Крипто-операции Python реализованы в собственном коде (скомпилирован из C). Поскольку вам нужны значения в программе на Python, их будет проще.

Linux поставляется с утилитами для вычисления контрольной суммы (cksum, md5sum, sha1sum...). То же самое делают большинство других объединений. Существует несколько портов Windows утилит GNU (это то, что вы получаете в Linux): Cygwin, Gnuwin32, Msys,... Вам понадобятся достаточно недавние утилиты, если вы хотите получить SHA-256 и SHA-512.

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

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

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

OpenSSL имеет инструменты для вычисления хэшей. Проект cygwin ( http://www.cygwin.com/) имеет инструменты openssl. Хотя это будет немного медленнее, чем в чисто Windows-приложении, из-за уровня cygwin, вы также получите среду, в которой вы можете написать скрипт для генерации хеша.

Другие вопросы по тегам