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

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

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

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

Я имел в виду именно то, что такое ReHash.Рехеш,Рехеш.

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

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

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

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

решение1

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

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

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

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

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

решение2

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

Связанный контент