CRC32-Prüfsummenrechner

Berechnen Sie die CRC-32- oder CRC-32C-Prüfsumme von Text, Hex-Bytes oder einer ganzen Datei, zeigen Sie sie als Hex, Dezimalzahl oder Base64 an und vergleichen Sie sie mit einem erwarteten Wert. Dateien werden lokal gelesen und nie hochgeladen.

Alle Algorithmen

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Geben Sie Text ein oder fügen Sie ihn ein, stellen Sie die Eingabe für Rohbytes auf „Hex“ um oder klicken Sie auf „Datei öffnen“, um die Prüfsumme des Dateiinhalts zu berechnen.
  2. Behalten Sie unter „Algorithmus“ CRC-32 für ZIP, gzip und PNG bei oder wählen Sie CRC-32C für iSCSI, ext4, Btrfs und Google Cloud Storage.
  3. Wählen Sie unter „Ausgabe als“ „hex (Kleinbuchstaben)“, „HEX (Großbuchstaben)“, „Dezimal“ oder „Base64“.
  4. Zum Prüfen fügen Sie die erwartete Prüfsumme in „Vergleichen mit“ ein, als Hex ohne 0x, als Dezimalzahl oder als Base64.

Was eine CRC32-Prüfsumme ist

Eine zyklische Redundanzprüfung (Cyclic Redundancy Check, CRC) behandelt die Eingabe als ein langes binäres Polynom, dividiert es durch ein festes Generatorpolynom und behält den Rest. Bei CRC-32 hat dieser Rest 32 Bit und wird meist als 8 Hex-Ziffern oder als vorzeichenlose Zahl von 0 bis 4.294.967.295 geschrieben. Nahezu jede Änderung an den Daten verändert den Rest.

CRCs sind für die Fehler ausgelegt, die echte Kabel, Funkverbindungen und Datenträger verursachen. CRC-32 erkennt jeden Bündelfehler mit einer Länge von bis zu 32 Bit, und eine zufällige Beschädigung bleibt nur in etwa einem von 4,3 Milliarden Fällen unentdeckt. Zudem lässt sich CRC-32 sehr schnell berechnen, weshalb das Verfahren in ZIP, gzip, PNG und Ethernet-Frames eingebaut ist.

CRC-32 und CRC-32C

CRC-32CRC-32C (Castagnoli)
Polynom0x04C11DB7, gespiegelt 0xEDB883200x1EDC6F41, gespiegelt 0x82F63B78
Prüfwert von 123456789cbf43926e3069283
Verwendet vonZIP, gzip, PNG, EthernetiSCSI, SCTP, ext4-Metadaten, Btrfs, Google Cloud Storage
HardwareunterstützungARMv8-Befehle für CRC32x86-SSE4.2-Befehl crc32, ARMv8

Beide beginnen mit 0xFFFFFFFF, verarbeiten die Bits jedes Bytes beginnend mit dem niederwertigsten und invertieren den Endwert; nur das Polynom unterscheidet sich, sodass dieselben Daten zwei voneinander unabhängige Ergebnisse liefern. Die erste Variante ist das, was die meisten Tools mit „CRC32“ meinen, und ist als CRC-32/ISO-HDLC katalogisiert. CRC-32C wurde später wegen seiner stärkeren Fehlererkennung von Speicher- und Netzwerkprotokollen übernommen. Google Cloud Storage gibt CRC-32C und Amazon S3 eine der beiden Varianten als Base64 der vier Bytes in Big-Endian-Reihenfolge an. Genau das zeigt die Ausgabe als „Base64“.

Eine Prüfsumme, keine Sicherheitsprüfung

Eine CRC schützt vor versehentlichen Fehlern, nicht vor Angriffen. Sie ist eine lineare Funktion, daher kann jeder eine Datei verändern und anschließend vier Bytes so anpassen, dass ihre CRC-32 unverändert bleibt. Eine übereinstimmende CRC schließt eine absichtliche Manipulation daher nicht aus. Um einen Download zu prüfen, vergleichen Sie einen SHA-256-Hashwert aus vertrauenswürdiger Quelle; um nachzuweisen, wer eine Nachricht gesendet hat, verwenden Sie einen HMAC.

32 Bit sind außerdem zu wenig, um Daten zu identifizieren. Schon bei etwa 77.000 zufälligen Dateien liegt die Wahrscheinlichkeit, dass zwei davon dieselbe CRC-32 haben, bei 50 %. Verwenden Sie sie daher weder als eindeutige ID noch als Schlüssel für die Deduplizierung. Wo kein Angreifer im Spiel ist, sind MD5 oder SHA-256 weit bessere Fingerabdrücke.

CRC32 im Code

# Python: zlib.crc32 ist in Python 3 vorzeichenlos;
# "& 0xffffffff" wird nur für Python 2 benötigt
import zlib
format(zlib.crc32(b'123456789'), '08x')    # 'cbf43926'

// Node.js 20.15+ und 22.2+
require('zlib').crc32('123456789').toString(16).padStart(8, '0')   // 'cbf43926'

// Go (import "hash/crc32")
crc32.ChecksumIEEE(data)                                   // CRC-32
crc32.Checksum(data, crc32.MakeTable(crc32.Castagnoli))    // CRC-32C

// Java: java.util.zip.CRC32 und seit Java 9 java.util.zip.CRC32C

// PHP
sprintf('%08x', crc32('123456789'));   // 'cbf43926'
hash('crc32b', '123456789');           // 'cbf43926', dieselbe CRC-32
hash('crc32c', '123456789');           // 'e3069283'
hash('crc32', '123456789');            // '181989fc', eine andere CRC

Achten Sie in PHP auf die Namen: Der Hash-Algorithmus namens crc32 ist nicht die ZIP-Prüfsumme, sondern die CRC von bzip2, ausgegeben in umgekehrter Byte-Reihenfolge. Verwenden Sie crc32b oder die Funktion crc32(), um dieselben Werte wie ZIP, gzip und dieses Tool zu erhalten. Der Unix-Befehl cksum verwendet wiederum eine andere Variante, die zusätzlich die Dateilänge einrechnet, sodass auch sein Ergebnis nicht übereinstimmt.

Beispiele

Eingabe (UTF-8)CRC-32
Hello, World!ec4ac3d0
Base64.is915d7207
你好50a2b841

Häufig gestellte Fragen

Wie lautet die CRC32 von „123456789“?
Dieser String ist die Standard-Testeingabe für CRC-Algorithmen. Seine CRC-32 ist cbf43926 (dezimal 3421780262) und seine CRC-32C e3069283. Liefert Ihre eigene Implementierung diese Werte, verwendet sie dieselben Parameter wie dieses Tool.
Warum weicht meine CRC32 von der eines anderen Tools ab?
Prüfen Sie vier Dinge: die Variante (CRC-32, CRC-32C, die CRC von bzip2 und POSIX-cksum liefern alle unterschiedliche Ergebnisse), die Eingabebytes (Zeilenenden, ein abschließender Zeilenumbruch, die Zeichenkodierung), das Zahlenformat (manche Sprachen liefern eine vorzeichenbehaftete 32-Bit-Ganzzahl, wodurch große Werte negativ werden) und die Byte-Reihenfolge.
Warum sind die CRC-Bytes in meiner ZIP- oder gzip-Datei vertauscht?
ZIP und gzip speichern die CRC-32 in Little-Endian-Byte-Reihenfolge, daher zeigt ein Hex-Editor die vier Bytes gegenüber der üblichen Schreibweise in umgekehrter Reihenfolge. PNG speichert sie als Big-Endian. Dieses Tool, unzip -v und die meisten anderen Programme geben das höchstwertige Byte zuerst aus.
Kann ich die CRC32 einer großen Datei berechnen?

Ja. Klicken Sie auf „Datei öffnen“, und die Prüfsumme wird auf Ihrem Gerät aus den Bytes der Datei berechnet, ohne dass diese hochgeladen wird; jede Datei, die Ihr Browser im Arbeitsspeicher halten kann, ist geeignet. Anschließend können Sie das Ergebnis mit dem Wert in einer SFV-Datei oder einer ZIP-Auflistung vergleichen.

Ist CRC32 eine Hashfunktion?

CRC32 bildet Daten beliebiger Länge auf einen festen 32-Bit-Wert ab und wird deshalb oft zusammen mit Hashfunktionen aufgeführt, ist aber eine Prüfsumme: Sie erkennt versehentliche Fehler und bietet keinen Schutz vor jemandem, der die Daten absichtlich verändert. Wenn Sie einen stärkeren Fingerabdruck benötigen, zeigt die Tabelle „Alle Algorithmen“ unter dem Ergebnis MD5 und die SHA-Familie für dieselbe Eingabe.