Wie wird eine CRC32 Prüfsumme berechnet?

Vielleicht bin ich auch nur nicht sehen, aber CRC32 scheint entweder unnötig kompliziert oder unzureichend erklärt und wo ich im Netz finden konnte.

Ich verstehen, dass es der Rest von einem nicht-tragen-basierte arithmetische Teilung der Meldung Wert, geteilt durch die (generator -) Polynom, aber die tatsächliche Umsetzung von it-entgeht mir.

Habe ich gelesen Ein Painless Guide To CRC Error Detection Algorithmenund ich muss sagen, es war nicht schmerzfrei. Es geht über die Theorie ziemlich gut, aber der Autor wird nie ein einfaches "das ist es." Er sagt, was die Parameter sind für die standard-CRC32-Algorithmus, aber er versäumt zu legen, klar, wie Sie es erhalten.

Den Teil, der mich bekommt wird, wenn er sagt "das ist es" und fügt dann an, "ach übrigens, es kann rückgängig gemacht werden, oder Schritte mit verschiedenen Anfangsbedingungen," und nicht geben eine klare Antwort auf die Frage, was die Letzte Möglichkeit, die Berechnung einer Prüfsumme CRC32 angesichts all der Veränderungen, die er gerade Hinzugefügt haben.

  • Gibt es eine einfachere Erklärung, wie die CRC32 wird berechnet?

Ich habe versucht, code in C, wie die Tabelle gebildet:

for (i = 0; i < 256; i++)
{
    temp = i;

    for (j = 0; j < 8; j++)
    {
        if (temp & 1)
        {
            temp >>= 1;
            temp ^= 0xEDB88320;
        }
        else {temp >>= 1;}
    }
    testcrc[i] = temp;
}

aber das scheint zu generieren Werte unvereinbar mit den Werten, die ich gefunden habe an anderer Stelle auf den Internet. Ich könnte verwenden Sie die Werte, die ich online gefunden, aber ich möchte verstehen, wie Sie erstellt wurden.

Alle helfen beim klären von diesen unglaublich verwirrenden zahlen würde sehr geschätzt.

InformationsquelleAutor der Frage aquanar | 2010-04-06

Schreibe einen Kommentar