1

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

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

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

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

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

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

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

2 ответа2

2

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

2

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .