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

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

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

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

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

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

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