Ищете кроссплатформенную / переносимую программу, которая выбрасывает криптографические хеши файлов
Я ищу программу, которая должна быть переносимой с исходного кода в 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, вы также получите среду, в которой вы можете написать скрипт для генерации хеша.