CRC-32 Rechner - Prüfsumme für Text, Hex und Dateien
CRC-32-Prüfsummen-Rechner
Vor dem Hashing als UTF-8 kodiert. 6 Bytes
| Nachrichtenlänge | 6 Bytes |
| CRC-32 | 0xFF55531A |
| CRC-32b (abschließendes Nullbyte) | 0x2F9F43A4 |
CRC-32 erkennt versehentliche Beschädigungen in ZIP-Archiven, gzip-Streams, PNG-Chunks und Ethernet-Frames. Es ist keine kryptografische Hashfunktion: CRC-32 ist linear, trivial zu fälschen und darf nie zur Integritätsprüfung gegenüber einem Angreifer verwendet werden.
Was ist
Eine Prüfsumme ist eine kurze, feste Übersicht über eine längere Nachricht, die so berechnet wird, dass jede versehentliche Änderung der Nachricht mit äußerster Wahrscheinlichkeit auch die Übersicht verändert. Die Idee ist älter als der Personalcomputer. IBM baute Lochkartenleser und Kartensortiermaschinen, und die Bediener stellten fest, dass zwischen den Maschinen übertragene Daten gelegentlich still verfälscht wurden: eine falsch gestanzte Spalte, eine verzogene Karte, ein verschlissener Leser. Die technische Antwort bestand darin, die Daten zusammen mit einem redundanten arithmetischen Wert zu übertragen, den die empfangende Maschine neu berechnete und verglich; stimmten beide überein, galt die Übertragung als intakt, und stimmten sie nicht, wurde eine Wiederholung angefordert. Die modernen Nachfahren dieser Idee sind die zyklischen Redundanzprüfungen. Ein CRC betrachtet die Nachricht als Polynom über GF(2), dem Körper, in dem Addition und Subtraktion beide das bitweise ODER sind, und berechnet den Rest bei der Division durch ein festes Generatorpolynom. CRC-32 verwendet den Generator 0x04C11DB7, und weil die bitumgekehrte Form sowohl in Hardware als auch in Software deutlich günstiger umzusetzen ist, arbeitet echter Code mit der umgekehrten Konstante 0xEDB88320.
Die übliche Implementierung berechnet vorab eine Tabelle mit 256 Einträgen und verarbeitet die Nachricht Byte für Byte mit einer einzigen Tabellenabfrage und einer Verschiebung: crc = tabelle[(crc ODER byte) UND 0xFF] ODER (crc >> 8). Diese Tabelle ist der Grund, warum eine Megabyte in wenigen Millisekunden geprüft wird, und sie aus der Definition zu erzeugen statt ein magisches Array einzufügen, garantiert, dass der Code wirklich das implementiert, was er zu implementieren vorgibt. Das Register wird vor dem ersten Byte mit 0xFFFFFFFF initialisiert und das Ergebnis wird beim Verlassen noch einmal mit 0xFFFFFFFF ODER-verknüpft, ein Verfahren namens Augmentation. Keines der beiden ODER ist Dekoration. Mit Null als Startwert lassen führende Nullbytes das Register unverändert, sodass die Nachricht 00 00 41 und die Nachricht 41 exakt denselben Wert erzeugen; die Initialisierung mit Einsen erzwingt die Aufnahme dieser Bytes, und genau das macht eine Folge von Nullen erkennbar. Das abschließende ODER garantiert, dass Nachricht plus eigene Prüfsumme, in Little-Endian-Reihenfolge angehängt, den festen Rest 0x2144DF1C hinterlässt, den der Empfänger prüft; deshalb ist die Prüfsumme einer leeren Nachricht der ordentliche Wert 0x00000000 und nicht eine Reihe von Einsen. CRC-32 und CRC-32b sind derselbe Algorithmus mit unterschiedlicher Rahmung: Die hier angezeigte Variante hängt ein einzelnes Nullbyte 0x00 an, bevor gerechnet wird, eine Konvention, die manche Protokolle nutzen, um die Nutzlast von ihrem Terminator zu unterscheiden; andere Quellen verwenden den Namen für die BZIP2-Variante, die vier Nullbytes anhängt.
Geben Sie daher immer an, welche Rahmung gemeint ist. In der Praxis ist CRC-32 das Integritätsfeld jedes ZIP-Eintrags, des Endes jedes gzip- und zlib-Stroms, jedes einzelnen Chunks einer PNG-Datei, in MPEG-2-Transportströmen sowie in der Frame Check Sequence jedes Ethernet-Frames, abgekürzt FCS. Was CRC-32 keineswegs ist, ist ein kryptografischer Hash. Es ist eine lineare Funktion über GF(2): Dieselbe Differenz per ODER in zwei gleich lange Nachrichten einzufügen, erzeugt dieselbe Differenz in ihren Prüfsummen. Wer eine Nachricht und ihre Prüfsumme kennt, kann daher eine um nur vier Bytes abweichende Nachricht konstruieren, die jede gewünschte Prüfsumme trägt. Zudem ist CRC-32 nur 32 Bit breit, sodass nach dem Geburtstagsparadoxon zwei verschiedene Nachrichten bei etwa der Quadratwurzel aus 2^32, also rund 65536 Nachrichten, dieselbe Prüfsumme teilen, während jeder versehentliche Ein-Bit-Fehler mit Sicherheit erkannt wird. Nutzen Sie es für zufällige Beschädigung, niemals für Integrität gegenüber einem Angreifer.
Wie zu verwenden
- Öffnen Sie den CRC-32 Rechner in Ihrem Browser. Die Prüfsumme wird lokal in JavaScript berechnet, nichts von dem, was Sie eingeben oder auswählen, wird an einen Server gesendet.
- Wählen Sie mit den drei Schaltflächen oben einen Eingabemodus: Text für eine Zeichenkette, Hex bytes für Rohdaten oder File für eine ganze Datei.
- Tippen Sie im Text-Modus in das Feld Input text. Die Zeichenkette wird zuvor als UTF-8 kodiert, sodass Umlaute und Emojis mehr Bytes belegen, als sie aussehen, und die Bytezahl laufend darunter aktualisiert wird.
- Fügen Sie im Hex-Modus Paare aus Hexadezimalziffern ein, etwa 48 65 6c 6c 6f. Leerzeichen, Kommas und 0x-Präfixe werden automatisch entfernt, eine ungerade Ziffernzahl wird abgelehnt, und jedes Nicht-Hexadezimalzeichen löst einen Fehler aus, statt stillschweigend übergangen zu werden.
- Wählen Sie im File-Modus über die Schaltfläche Choose a file eine Datei aus. Der Rechner liest sie über die File-API des Browsers und zeigt die Größe auf der Platte zusammen mit der Zahl der tatsächlich gehashten Bytes an.
- Wählen Sie im Menü Output format die benötigte Darstellung: Hex, Decimal, Octal, Binary oder Base64. Das Feld CRC-32 result wird sofort im gewählten Format neu dargestellt.
- Lesen Sie in der Übersichtstabelle die genaue Nachrichtenlänge in Bytes, den CRC-32-Wert und den CRC-32b-Wert mit einem angehängten Nullbyte zum Vergleich nach.
- Vergleichen Sie den erhaltenen Wert mit einer veröffentlichten Prüfsumme, um zu bestätigen, dass ein Download, ein Upload oder eine übertragene Nutzlast unbeschädigt angekommen ist.
Beispiele
Eingabe: Text-Modus, die Zeichenkette CRC-32
Prozess:
6 UTF-8-Bytes 43 52 43 2D 33 32 durch die Tabellenschleife geschicktErgebnis: CRC-32 = 0xFF55531A, CRC-32b mit einem Nullbyte am Ende = 0x2F9F43A4
Eingabe: Text-Modus, die Zeichenkette 123456789
Prozess:
Der Prüfwert aus ISO 3309 und ITU-T V.42 für die Variante CRC-32/BZIP2Ergebnis: 0xCBF43926 — weicht Ihre Implementierung ab, sind die Parameter falsch
Eingabe: Hex-Modus, die Bytes 48 65 6c 6c 6f
Prozess:
Fünf Rohbytes, die Hello bedeuten, als Hexadezimal statt als Text eingegebenErgebnis: 0xF7D18982 — anders als beim Hashen des Wortes Hello als Text
Eingabe: File-Modus, eine leere Datei der Größe 0
Prozess:
Die Schleife läuft kein einziges Mal, der Startwert passiert direkt das abschließende ODERErgebnis: 0x00000000, weshalb sich eine leere Nachricht leicht erkennen lässt
Verwandte Suchen
Leute suchen auch nach: crc32 rechner, crc32 berechnen, prüfsumme berechnen, crc32 online, prüfsummenrechner, crc32 von datei.
crc32 rechnercrc32 berechnenprüfsumme berechnencrc32 onlineprüfsummenrechnercrc32 von dateicrc32 hexadezimalcrc32 aus textcrc32biso 3309itu-t v.420xedb88320dateiintegrität prüfenzip prüfsummegzip prüfsummepng prüfsummeethernet fcscrc32 base64crc32 vs sha256beschädigung erkennen
Häufig gestellte Fragen
Wofür wird CRC-32 in echter Software tatsächlich verwendet?
CRC-32 wird überall dort eingesetzt, wo eine billige und nahezu sichere Prüfung gegen zufällige Beschädigung mehr wert ist als ein Sicherheitsgarantie. Jedes ZIP-Archiv speichert pro Eintrag eine im Zentralverzeichnis, und unzip prüft sie beim Entpacken, sodass eine abgeschnittene oder von Bitfehlern betroffene Datei gemeldet wird, statt stillschweigend Unsinn zu erzeugen. gzip und zlib hängen einen CRC-32 an ihren komprimierten Strom an, weshalb eine beschädigte .gz-Datei einen Prüfsummenfehler meldet und keine unerklärlichen Dekompressionsfehler. PNG speichert in jedem einzelnen Chunk eine CRC-32, sowohl um jeden Block einzeln zu prüfen als auch um den Dekodierer beim ersten defekten Chunk anzuhalten. MPEG-2-Transportströme führen einen pro Paket, und die Frame Check Sequence von Ethernet ist ein CRC-32, den die Netzwerkkarte normalerweise in Hardware für jedes Frame berechnet, das einen Switch durchquert. In allen diesen Fällen ist das Bedrohungsmodell dasselbe: Rauschen, Alterung, unvollständige Schreibvorgänge und nicht übereinstimmende Versionen, nicht ein entschlossener Angreifer.
Ist CRC-32 ein kryptografischer Hash? Darf ich ihn für Passwörter verwenden?
Nein, und ihn für Passwörter oder zur Integritätsprüfung eines Downloads aus einer nicht vertrauenswürdigen Quelle zu verwenden wäre ein schwerer Fehler. Eine CRC ist eine lineare Funktion über dem Körper GF(2), das heißt, dass dieselbe per ODER eingefügte Differenz in zwei Nachrichten dieselbe Differenz in ihren Prüfsummen erzeugt. Wer eine Nachricht und ihre Prüfsumme kennt, kann deshalb eine andere Nachricht konstruieren, die sich in höchstens vier Bytes unterscheidet und jede gewünschte Prüfsumme trägt. Das ist eine Fälschung, die weder Können noch eine Suche erfordert. Da der Wert nur 32 Bit breit ist, kann ein Angreifer zudem in Sekunden auf einer GPU eine Kollision vorberechnen. Es gibt keinen Schlüssel, keine Salze, keinen Kostenfaktor und kein Avalanche-Verhalten, also liefert der CRC keinerlei Einweg-, Unvorhersehbarkeits- oder Brute-Force-Schutzeigenschaften, auf die Passwortspeicherung oder Codesignatur angewiesen sind. Nutzen Sie für Integrität gegenüber einem Angreifer einen kryptografischen Hash wie SHA-256 und für alles, was nach einer Anmeldeinformation aussieht, eine spezielle Funktion wie Argon2id oder bcrypt.
Warum liefert CRC-32b ein anderes Ergebnis als CRC-32?
Weil die beiden Namen denselben Algorithmus in leicht unterschiedlichen Rahmungen bezeichnen. Die Zeile CRC-32b in diesem Werkzeug führt exakt dasselbe Verfahren über Ihre Bytes plus ein angehängtes Nullbyte 0x00 aus, und dieses zusätzliche Byte verändert den Registerzustand, sodass sich alle Werte verschieben. Der Zweck einer solchen Variante ist es, die Nutzlast von ihrem eigenen Terminator zu unterscheiden, damit ein Strom, der legitim mit einem Nullbyte endet, nicht mit einem verwechselt wird, der dort zufällig endet. Wichtig zu wissen: Der Begriff wird uneinheitlich verwendet. Die BZIP2-Variante, üblicher als CRC-32/BZIP2 geschrieben und gekennzeichnet durch den Prüfwert 0xCBF43926 für die Zeichenkette 123456789, hängt vier Nullbytes statt eines an und ist eine andere Funktion. Wenn Sie mit einem bestimmten Werkzeug oder Format zusammenarbeiten, prüfen Sie, was diese Implementierung tatsächlich anhängt, statt dem Namen zu vertrauen.
Was bedeutet die Konstante 0xEDB88320?
Sie ist die umgekehrte Form des CRC-32-Generatorpolynoms 0x04C11DB7 und taucht in praktisch jeder Softwareimplementierung von CRC-32 auf, der Sie begegnen werden. Das Generatorpolynom legt fest, welche Bitmuster als Fehler gelten. Seine normale Form mit den Bits in Vorwärtsrichtung ist die Darstellung aus Lehrbüchern, aber die umgekehrte Reihenfolge lässt die gesamte Rechnung von rechts nach links durch die Bytes laufen, was eine Tabellenabfrage und eine Verschiebung pro Byte erfordert statt acht bedingter Verschiebungen. In der umgekehrten Implementierung kehrt sich der Wert 0x04C11DB7 zu 0xEDB88320 um, und jeder der 256 Tabelleneinträge entsteht, indem man vom Wert eines Bytes startet und diese Umkehrschleife achtmal anwendet: Ist das niedrigste Bit gesetzt, wird mit 0xEDB88320 ODER-verknüpft und nach rechts verschoben, andernfalls wird nur nach rechts verschoben. Die Tabelle aus dieser Definition zu erzeugen, wie es dieses Werkzeug tut, ist sicherer als ein 256-Einträge-Array einzufügen, weil damit jede Möglichkeit ausgeschlossen ist, dass die ausgelieferte Tabelle von der Definition abweicht, die sie zu implementieren vorgibt.
Warum erhalten zwei verschiedene Dateien manchmal dieselbe CRC-32-Prüfsumme?
Weil der Ausgaberaum nur 32 Bit breit ist. Es gibt rund 4,3 Milliarden mögliche Prüfsummen, die sich auf alle erdenklichen Nachrichten verteilen müssen, also ist es unvermeidlich, dass sich einige Nachrichten eine teilen. Nach dem Geburtstagsparadoxon liegt die Zahl der Nachrichten, ab der eine Kollision wahrscheinlich wird, ungefähr bei der Quadratwurzel aus 2^32, also bei etwa 65536; Zufallsdaten treffen in dieser Größenordnung auf eine doppelte Prüfsumme. Echte Dateien sind sogar schlechter als Zufallsdaten, weil strukturierte Dokumente meist nur an wenigen vorhersehbaren Stellen abweichen. Das ist kein Konstruktionsfehler, sondern die Konstruktion, die genau wie vorgesehen funktioniert. Eine CRC-32 erkennt jeden Ein-Bit-Fehler und jeden Burst-Fehler bis 32 Bit mit Sicherheit und deckt damit praktisch alle zufälligen Beschädigungen durch Rauschen, Alterung und Übertragungsfehler ab. Sie kann keine Identität gegenüber einem Angreifer belegen, denn ein Angreifer kann in Sekunden gezielt eine Kollision bauen. Wenn Sie Kollisionsresistenz brauchen, brauchen Sie einen kryptografischen Hash.
Wie prüfe ich, ob eine heruntergeladene Datei unbeschädigt ist?
Berechnen Sie hier den CRC-32 der Datei und vergleichen Sie ihn mit der Prüfsumme, die der Herausgeber oder das Übertragungssystem hinterlegt hat. Stimmen sie überein, ist die Datei ohne Beschädigung angekommen. Viele Werkzeuge tun das bereits für Sie, denn unzip prüft jeden Eintrag, gzip und zlib prüfen das Stromende und Browser prüfen PNG-Chunks beim Dekodieren. Selbst nachzurechnen bleibt aber der schnellste Weg zu bestätigen, was ein bestimmtes Werkzeug erzeugt hat, und der einzige Weg bei einem ungewöhnlichen Format ohne eingebaute Prüfung. Wählen Sie den Modus File, wählen Sie den Download und lesen Sie die Ausgabe CRC-32 of file. Eine wichtige Einschränkung: Eine übereinstimmende CRC-32 beweist nur dann, dass die Datei die des Herausgebers ist, wenn Sie dem Herausgeber vertrauen. Konnte der Download unterwegs manipuliert werden, kann ein Angreifer mit dieser Fähigkeit eine andere Datei mit gleicher Prüfsumme erzeugen, und genau deshalb gibt es neben Prüfsummen auch GPG- oder Sigstore-signierte Veröffentlichungen.
Werden meine Datei oder mein Text auf einen Server hochgeladen?
Nein. Der Rechner ist eine Clientkomponente: Das JavaScript in Ihrem Browser liest Ihren Text, Ihre Hex-Bytes oder die von Ihnen gewählte Datei, baut die CRC-32-Tabelle im Speicher auf und führt die Schleife lokal aus. Nichts wird über das Netzwerk gesendet, nichts in Serverprotokolle geschrieben, und nichts bleibt nach dem Schließen des Tabs bestehen. Für den Dateimodus wird dies über die File-API des Browsers umgesetzt, die die Datei bei Bedarf von der lokalen Platte in den Speicher liest. Das ist praktisch wertvoll, nicht nur datenschutztechnisch: Sie können ein Disk-Image von mehreren Gigabyte oder ein vertrauliches, reguliertes Archiv prüfen, ohne auf einen Upload zu warten und ohne eine Kopie Ihrer Daten an einen Drittanbieter zu übergeben.