O md5 pode ser dividido em vários núcleos / threads?

Ao calcular a soma md5 de arquivos grandes, vejo um único salto no núcleo da CPU para 100% pelo tempo que demora, deixando todos os outros núcleos ociosos.

Minha compreensão rudimentar do md5 é que todo o processo é completamente linear, onde os valores são dependentes de todos os valores anteriores lidos, e não há nada que possamos fazer para torná-lo multi-threaded. Isso é verdade?

Ou existe uma maneira de quebrar os arquivos em seções, calcular<alguma coisa> em várias partes usando vários núcleos e, em seguida, combine esses<alguma coisa> valores no md5 final?

A biblioteca que estamos usando para calcular o md5sum éhttp://libmd5-rfc.sourceforge.net/ mas eu mudaria para um diferente se fosse possível quebrar o md5sum em vários núcleos para que ele fosse concluído mais rapidamente.

(Nota: mudar para algo diferente de md5 não é a questão, nem pode ser feito por causa dos outros sistemas fechados com os quais isso se relaciona. Essa questão também não é sobre a segurança do uso do md5.)

questionAnswers(1)

yourAnswerToTheQuestion