Welche Hash-Algorithmen sind parallelisierbar? Optimieren des Hashings großer Dateien unter Verwendung von Multi-Core-CPUs
Ich bin daran interessiert, das Hashing einiger großer Dateien zu optimieren (Optimierung der Wanduhrzeit). Die E / A wurde bereits gut genug optimiert, und das E / A-Gerät (lokale SSD) ist nur mit etwa 25% der Kapazität ausgelastet, während einer der CPU-Kerne vollständig ausgelastet ist.
Ich habe mehr Kerne zur Verfügung und werde in Zukunft wahrscheinlich noch mehr Kerne haben. Bisher konnte ich nur auf mehr Kerne zugreifen, wenn ich zufällig mehrere Hashes derselben Datei benötigte, z. B. einen MD5 UND einen SHA256 gleichzeitig. Ich kann denselben I / O-Stream verwenden, um zwei oder mehr Hash-Algorithmen zu speisen, und ich bekomme die schnelleren Algorithmen kostenlos (bis zur Zeit der Wanduhr). Wie ich die meisten Hash-Algorithmen verstehe, ändert jedes neue Bit das gesamte Ergebnis, und es ist von Natur aus schwierig / unmöglich, dies parallel zu tun.
Ist einer der Mainstream-Hash-Algorithmen parallelisierbar?
Gibt es nicht-Mainstream-Hashes, die parallelisierbar sind (und für die mindestens eine Beispielimplementierung verfügbar ist)?
Als zukünftige CPUs zu mehr Kernen und einer Abflachung der Taktrate tendieren, gibt es eine Möglichkeit, die Leistung von Datei-Hashing zu verbessern? (außer beim Übertakten mit flüssigem Stickstoff?) oder ist es von Natur aus nicht parallelisierbar?