SHA-256 und SHA-1 einer Datei berechnen
Berechnet SHA-256 und SHA-1 einer Datei mit der Kryptografie-Implementierung des Browsers und vergleicht die Werte mit einer eingefügten Prüfsumme. Die Datei wird als rohe Bytes gelesen und nicht hochgeladen.
Beliebige Datei bis 512 MB. Sie wird nur in diesem Tab gelesen und nirgendshin gesendet.
Die Ergebnisse werden ohne Gewähr für ihre Richtigkeit bereitgestellt. Die Methode und ihre Quellen stehen unten, damit Sie den Rechenweg prüfen können.
So funktioniert es
Was eine Prüfsumme beantwortet
Eine kryptografische Prüfsumme fasst jedes Byte einer Datei in einer festen Zeichenfolge zusammen. Ändert sich nur ein Byte, entsteht mit sehr hoher Wahrscheinlichkeit ein anderer SHA-256-Wert. So lässt sich prüfen, ob ein Download vollständig und bytegleich mit der vom Herausgeber beschriebenen Datei ist.
Das ist nicht dasselbe wie eine Sicherheitsprüfung. Ein passender Wert sagt nichts darüber, ob der Herausgeber vertrauenswürdig ist, und schützt nicht, wenn Download und Prüfsumme gemeinsam ausgetauscht wurden. Eine getrennt geprüfte digitale Signatur beantwortet die Herkunftsfrage.
So entstehen die beiden Werte
Die Datei wird nicht als Text oder Bild interpretiert, sondern als rohe Bytefolge gelesen. Der Browser übergibt genau diese Bytes seiner nativen Web-Crypto-Implementierung. SHA-256 liefert 32 Byte, SHA-1 liefert 20 Byte. Jedes Ergebnisbyte wird anschließend mit zwei hexadezimalen Zeichen dargestellt; daraus folgen 64 beziehungsweise 40 Zeichen.
Eine führende Null bleibt erhalten. Ohne sie wäre die Darstellung kürzer und nicht mehr eindeutig. Die herunterladbaren Prüfsummendateien verwenden das Format gängiger sha256sum- und sha1sum-Werkzeuge, damit sie dort direkt mit der Prüfoption gelesen werden können.
Weshalb SHA-1 noch erscheint
SHA-1 ist seit nachgewiesenen Kollisionen keine geeignete Wahl gegen gezielte Manipulation. Viele ältere ISO-Abbilder und Archivlisten veröffentlichen aber weiterhin nur einen 40-stelligen SHA-1-Wert. Für die Frage, ob ein Download versehentlich beschädigt wurde, ist der Vergleich weiterhin praktisch; für neue Veröffentlichungen und Sicherheitsentscheidungen ist SHA-256 die vernünftige Voreinstellung.
Grenzen der Berechnung
Die Web-Crypto-Schnittstelle nimmt einen vollständigen Puffer entgegen und bietet keinen inkrementellen Digest. Deshalb muss die Datei während der Berechnung in den Speicher passen und ist hier auf 512 MB begrenzt. Die Fortschrittsanzeige meldet nur die tatsächlich beobachtbaren Schritte, statt innerhalb eines undurchsichtigen nativen Aufrufs Prozentwerte zu erfinden.
So wird es gemacht
- Lies die ausgewählte Datei in diesem Tab als unveränderte Bytefolge ein.
- Übergib die Bytes mit dem Namen SHA-256 an Web Crypto und erhalte einen 32 Byte langen Digest.
- Berechne anschließend auf dieselbe Weise SHA-1 mit 20 Byte Länge und gib zwischen beiden Schritten die Kontrolle frei, damit Abbrechen funktioniert.
- Schreibe jedes Byte als zwei hexadezimale Zeichen und erhalte führende Nullen.
- Normalisiere eine eingefügte Prüfsumme, indem Großschreibung, umgebende Leerzeichen, ein Algorithmuspräfix und ein nachgestellter Dateiname entfernt werden.
- Vergleiche den normalisierten Wert mit beiden Digests und biete zusätzlich je eine kompatible Prüfsummendatei zum Herunterladen an.
Wovon es ausgeht
- Beide Hashwerte stammen aus der Web-Crypto-Implementierung des Browsers und nicht aus einer selbst geschriebenen Kryptografiebibliothek dieser Seite.
- Eine übereinstimmende Prüfsumme belegt Bytegleichheit mit der veröffentlichten Datei. Sie beweist nicht, wer die Datei veröffentlicht hat oder ob der Herausgeber vertrauenswürdig ist.
- SHA-1 dient nur dem Vergleich mit älteren Listen. Praktische Kollisionen sind bekannt, und NIST lässt den Algorithmus auslaufen; für neue Veröffentlichungen sollte SHA-256 verwendet werden.
- Die gesamte Datei liegt während der Berechnung im Speicher dieses Tabs. Da Web Crypto keinen schrittweisen Digest anbietet, gilt eine Obergrenze von 512 MB.
- Der Vergleich ignoriert Darstellungsunterschiede außerhalb des eigentlichen Digest. Innerhalb der hexadezimalen Zeichenfolge wird kein Zeichen ausgelassen oder korrigiert.
Fragen
Wird die ausgewählte Datei hochgeladen?
Nein. Der Browser liest die Datei lokal und berechnet beide Hashwerte auf Ihrem Gerät. Es gibt keinen Dienst, an den die Datei zur Verarbeitung geschickt wird; genau das ist bei einer noch nicht vertrauten Datei besonders wichtig.
Soll ich SHA-256 oder SHA-1 vergleichen?
Verwenden Sie SHA-256, wenn der Herausgeber ihn anbietet. Eine 64-stellige hexadezimale Prüfsumme ist SHA-256, eine 40-stellige meist SHA-1. SHA-1 wird nur angezeigt, damit ältere Veröffentlichungen geprüft werden können.
Spielt Groß- oder Kleinschreibung in der Prüfsumme eine Rolle?
Nein. Hexadezimale Ziffern tragen keine Bedeutung in ihrer Schreibweise. Das Werkzeug ignoriert außerdem Zwischenräume, ein führendes Algorithmuspräfix und einen nachgestellten Dateinamen, wie sie in veröffentlichten Listen üblich sind.
Was soll ich tun, wenn die Werte nicht übereinstimmen?
Führen Sie die Datei nicht aus. Prüfen Sie zuerst die Dateigröße und laden Sie sie erneut aus einer kontrollierten Quelle oder von einem anderen Spiegelserver. Bleibt die Abweichung bestehen, behandeln Sie den Download als verändert oder beschädigt.
Beweist ein passender SHA-256-Wert, dass eine Datei sicher ist?
Er beweist nur, dass die Bytes zur verglichenen Prüfsumme passen. Wenn Datei und Prüfsumme von derselben manipulierten Seite stammen, kann ein Angreifer beide ersetzen. Für die Herkunft braucht es eine digitale Signatur mit einem bereits vertrauenswürdigen Schlüssel.
Warum gibt es keinen MD5-Wert?
Web Crypto bietet MD5 nicht an. Für eine Seite, deren Ergebnis vertrauenswürdig sein soll, wäre eine eigene veraltete Implementierung der falsche Kompromiss. Für alte MD5-Listen eignen sich die Betriebssystemprogramme md5sum oder certutil.
Warum springt die Fortschrittsanzeige?
Web Crypto nimmt die vollständige Eingabe entgegen und liefert den vollständigen Digest zurück. Es stellt keinen Zwischenstand pro Dateiblock bereit. Die Anzeige bewegt sich deshalb nur zwischen echten Arbeitsschritten und erfindet keinen scheinbar präzisen Fortschritt.