Можно ли разбить md5 на несколько ядер или потоков?

При вычислении суммы больших файлов md5 я вижу, что один процессорный ядро ​​скачет до 100%, несмотря на его длительность, оставляя все остальные ядра бездействующими.

Мое рудиментарное понимание md5 - это весь процесс, полностью линейный, где значения зависят от всех предыдущих значений, и мы ничего не можем сделать, чтобы сделать его многопоточным. Это правда?

Или есть способ разбить файлы на разделы, вычислить <something> по нескольким частям с использованием нескольких ядер, а затем объединить те <something> значения в окончательный md5?

Библиотека, которую мы используем для вычисления md5sum, http://libmd5-rfc.sourceforge.net/, но я бы переключился на другую, если было возможно разбейте md5sum на несколько ядер, чтобы он завершился быстрее.

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

Ответ 1

Нет, вы не можете разбить его на уровне файла. MD5 поддерживает состояние при прохождении данных.