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

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

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

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

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

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

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