CRC32-Summe

nullplan

Grünschnabel
Hi all,
ich habe gerade ein Programm geschrieben, dass die CRC32-Summe von sich selbst ermittelt. Den dazu notwendigen Code habe ich von der Wikipedia-Seite, aber ich habe das ganze noch etwas angewandelt (damit eben die Datei durchgerechnet wird, nicht irgendein Feld) Woran erkenne ich, dass ich richtig implementiert habe? D.h. gibt es irgendwo Webseiten respektive Programme, die die CRC-Prüfsumme einer Datei ausrechnen aus ausgeben? Und die das auch noch richtig machen?
Danke und tschö,
Markus
P.S.: Wenn mir einer sagt, ob ich das folgendermaßen richtig gemacht habe, bin ich auch zufrieden. Das ganze wird einmal Teil eines Verschlüsselungssystems, und das soll sich nicht selbst abschießen können, also ist Prüfung angesagt. Hier der Code:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#define CRC32POLY 0x04C11DB7

uint32_t crc32;

void calc_crc32(int bit)
{
    int hbit = (crc32 & 0x80000000) ? 1 : 0;
    if (hbit != bit)
        crc32 = (crc32 << 1) ^ CRC32POLY;
    else
        crc32 = crc32 << 1;
}

int main()
{
    int buf;
    FILE* in = fopen("crc32.exe", "rb");
    if (in == NULL)
    {
        fputs("error opening myself for reading (kinda strange)", stderr);
        return 1;
    }
    while ((buf = fgetc(in)) != EOF)
    {
        for(int i = 0; i <= sizeof(int) * 8; i++)
        {
            calc_crc32((buf >> i) & 1);
        }
    }

    fprintf(stdout, "Meine CRC32-Prüfsumme: %u", crc32);
}
 
Zurück