Suche nach einem plattformübergreifenden/portablen Programm, das kryptografische Hashes einer Datei ausspuckt

Suche nach einem plattformübergreifenden/portablen Programm, das kryptografische Hashes einer Datei ausspuckt

Ich suche nach einem Programm, dessen Quellcode zwischen Windows und Linux portierbar sein sollte (z. B. ANSI C usw.) und das kryptografische Hashes wie MD5, SHA usw. sowie CRC32 einer ihm übergebenen Datei/Dateiliste generiert.

Ich werde diese ausführbare Datei auf Terabytes von Dateien ausführen und ihre SHA-, MD5- und CRC32-Signaturen (und in Zukunft mehr) generieren, also Geschwindigkeitist wichtig.

Ich habe genau das im Sinn gehabt, was ReHash istReHash,ReHash.

Leider habe ich gesehen, dass sich viele Benutzer darüber beschwert haben, dass es Fehler bei der Implementierung der Hashes sowie Fehler bei der Implementierung des Paddings (für blockbasierte Algorithmen) gibt.

Da ich kein Experte in Kryptographie bin und nur nach einer Blackbox-Lösung suche, die mir einfach die gewünschten Hashes liefert, ohne dass ich mehr tun muss, als etwas Code zu kompilieren, frage ich mich, ob es nichts Besseres gibt?

Ich könnte natürlich ein Glue-Programm in Python schreiben, das die Kryptomodule nutzt, um das zu generieren, was ich will, aber ich hätte eine kompilierte Binärdatei aus einer Sprache wie C vorgezogen.

Ich werde diese ausführbare Datei auf Terabyte an Dateien ausführen, ihre SHA-, MD5- und CRC32-Signaturen (und zukünftig noch mehr) generieren und das alles aus Python-Code heraus handhaben, also wäre etwas Python-kompatibles vorzuziehen, aber nicht auf Kosten einer C-ähnlichen Geschwindigkeit.

Antwort1

Die Python-Kryptooperationen werden in nativem Code implementiert (kompiliert aus C). Da Sie die Werte in einem Python-Programm benötigen, ist ihre Verwendung einfacher.

Linux verfügt über Dienstprogramme zur Berechnung von Prüfsummen ( cksum, md5sum, sha1sum, ...). Das gilt auch für die meisten anderen Unix-Betriebssysteme. Es gibt mehrere Windows-Ports der GNU-Dienstprogramme (die Sie unter Linux erhalten):Cygwin,Gnuwin32,Msys, ... Sie benötigen ausreichend aktuelle Dienstprogramme, wenn Sie SHA-256 und SHA-512 erhalten möchten.

Es gibt mehrere ANSI C-Implementierungen mit sehr liberalen Lizenzen verschiedener kryptografischer Algorithmen, die oft nicht in einer einzigen Distribution zusammengefasst sind. Sie können nach ihnen suchen und sie mit kleinen Eingaben testen, um ihre Zuverlässigkeit zu prüfen.

Stellen Sie unter Windows sicher, dass Sie Dateien je nach Wunsch korrekt als Binär- oder Textdateien behandeln, da die Prüfsummen über Byte-Streams und nicht über Zeilen-Streams definiert werden. (Normalerweise möchten Sie die Dateien im Binärmodus öffnen, aber wenn Sie eine Textdatei haben, die in Windows-Zeilenenden transkodiert wurde, müssen Sie sie als Text öffnen, um den Effekt umzukehren.) Stellen Sie unter allen Betriebssystemen sicher, dass Sie beim Öffnen der Datei keine Kodierungsübersetzung durchführen.

Da Geschwindigkeit für Sie sehr wichtig ist, sammeln Sie alle Implementierungen, die Sie finden können, und vergleichen Sie sie mit Eingaben mittlerer Größe (einige Megabyte). Unterschiedliche Implementierungen können auf unterschiedlichen Architekturen eine höhere Geschwindigkeit bieten. 64-Bit-Implementierungen sind wahrscheinlich schneller, sofern Sie sie überhaupt ausführen können.

Antwort2

OpenSSL verfügt über Tools, die Hashes berechnen. Der Cygwin (http://www.cygwin.com/)-Projekt verfügt über OpenSSL-Tools. Obwohl es aufgrund der Cygwin-Schicht etwas langsamer ist als eine reine Windows-App, erhalten Sie auch eine Umgebung, in der Sie Ihre Hash-Generierung skripten können.

verwandte Informationen