CRC64
Die zyklische Redundanzprüfung (ZRP, englisch cyclic redundancy check, daher meist CRC) ist ein Verfahren zur Bestimmung eines Prüfwerts für Daten, um Fehler bei der Übertragung oder Speicherung erkennen zu können. Im Idealfall kann das Verfahren sogar die empfangenen Daten selbständig korrigieren, um eine erneute Übertragung zu vermeiden.
Es wurde 1961 von W. Wesley Peterson entwickelt.
Methoden
Die Berechnung des CRC-Werts beruht auf dem Prinzip der Polynomdivision. Die zu übertragenden Bits werden als Faktoren eines Polynoms interpretiert, mit welchen Berechnungen angestellt werden können, die das nachfolgende Verfahren ermöglichen. Insbesondere entspricht die Polynomdivision einem bitweisen XOR (exklusiv-oder bzw. entweder-oder). Sind die Bits gleich, ist das Ergebnis 0. Sind sie verschieden, ist das Ergebnis 1.
- 8; *16; *32; *64; Calculating
- Batch Calculation
- 8; *16; *24; *32; MD5; BIN; CheckSum; String Calculating
Zwischenergebnis 000110100
Prüfwert 01011
Division /
Ergebnis 000011000
Das Ergebnis dieser Berechnung wird mit jedem Schritt kleiner. Hat das Ergebnis weniger relevante Stellen als der Prüfwert, werden die letzten n-1 Stellen als Rest übernommen, der sogenannte CRC-Wert. Dieser Rest wird an die zu übertragende Bitfolge angehängt und gemeinsam übertragen.
Um zu verifizieren, dass die Daten fehlerfrei übertragen wurden, wiederholt der Empfänger die Berechnung mit der übertragenen Bitfolge und dem CRC-Polynom. Da die Bitfolge um den ermittelten Rest ergänzt wurde, bleibt dieses Mal kein Rest übrig, wenn die Daten fehlerfrei übertragen wurden (oder wenn ein sehr seltener Fehler auftrat, der einem Vielfachen des CRC-Polynoms entsprach).
Das Verfahren setzt voraus, dass Sender und Empfänger wissen, dass gesicherte Daten übertragen werden und wie das CRC-Polynom lautet. Den Daten selbst ist beides nicht zu entnehmen.
Das folgende C-Programm berechnet die CRC-32 des 8 Bit langen Datenstroms 10001100:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
/* typedef unsigned __int32 uint32_t; => für MS-VS */
#define CRC32POLY 0x04C11DB7 /* CRC-32 Polynom */
const uint8_t bitstream[] = { 1,0,0,0,1,1,0,0 };
const int bitcount = 8;
uint32_t crc32 = 0; /* Schieberegister */
int main ()
{
for (int i = 0; i < bitcount; i++)
{
if ( ((crc32 >> 31) & 1) != bitstream[i])
crc32 = (crc32 << 1) ^ CRC32POLY;
else
crc32 = (crc32 << 1);
}
printf ("0x%08X\n", crc32);
}
System : 7, 8, Vista, 10, 11
Lizenz : Freeware
Version : 0.59
Version : 0.59
Grösse : 1.709 KB
Update : 11/2023
Passwort : asciigen.blogspot.com
MD5 : ed413e3b7d9ce0bf6437f53094bd3b1f
SHA-1 : 0f0757744e284deee251dea8f2eb5cc388834571
SHA-256 : 57f6fa7dbfe4b4794371bfc8769c18257efcb6fe58eaffad57a66bb50028faf7
CRC32 : a4c536baMirros : MediaFire | Mega | Proton


The batch mode is very helpful :)
AntwortenLöschenWäre Praktischer wenn man das Fenster vergrössern könnte.
AntwortenLöschenIst mit in der neuen Version drin !
AntwortenLöschenIch danke !
AntwortenLöschenWird immer besser, String Calculation "Save" Button wäre echt Praktisch.
AntwortenLöschenGracias puedo usarlo. ;)
AntwortenLöschenBe Welcome..
LöschenGood new Version.
AntwortenLöschenTHX!
Löschen