Forum: PC-Programmierung CRC Berechnung


von run (Gast)


Lesenswert?

Hallo, in einer vorhanden Applikation auf einem Embedded System wird die 
Prüfsummenberechnung folgendermassen durchgeführt:
1
// Implementierung Prüsummenberechnung
2
unsigned char CalculateChecksum(unsigned char *ptrData, unsigned long Length, unsigned long *ptrChecksum )
3
{
4
  for ( unsigned long x = 0; x < Length; x++ )
5
  {
6
    *ptrChecksum += ptrData[ x ];
7
  }
8
9
  return 0;
10
}
1
StartValue = 0xAAAAAAAA;
2
CalculateChecksum(Data, 500, &StartValue);

Hier erkenne wird kein Polynom für die Prüfsummenbildung verwendet.

von Rolf M. (rmagnus)


Lesenswert?

Allerdings. Hast du auch eine Frage?

von Werner (Gast)


Lesenswert?

Die Checksum ist also die "Quersumme" vom Data Array plus 0xAAAAAAAA...


Tja... kann man machen. Es ist eine von Phantastillionen Möglichkeiten.

Werner

von Patrick C. (pcrom)


Lesenswert?

Meinst du CHECKSUM oder CRC ? Was wollst du ?
CRC funktioniert mit polynomen, CHECKSUM nicht

von Oberlehrer (Gast)


Lesenswert?

Patrick C. schrieb:
> Meinst du CHECKSUM oder CRC ? Was wollst du ?
> CRC funktioniert mit polynomen, CHECKSUM nicht

Warum plenkst du? Warum sind so viele Rechtschreibfehler in deinem Text?

von Patrick C. (pcrom)


Lesenswert?

>> Warum sind so viele Rechtschreibfehler in deinem Text?
Weil ich ein bloeden Hollaender bin auf in Deutsches Forum.

>> Warum plenkst du?
Weisz ich nicht, das Wort kenne ich nicht

von run (Gast)


Lesenswert?

Ich war der Meinung das die obige Implementierung ein Polynom benötigt 
für die Berechnung der Checksum.

von Patrick C. (pcrom)


Lesenswert?

>> Ich war der Meinung das die obige Implementierung ein Polynom benötigt
für die Berechnung der Checksum

Wenn es eine CRC waehre ja, aber ein Checksum ist kein CRC.

http://computer.howstuffworks.com/encryption7.htm

von Mark B. (markbrandis)


Lesenswert?

run schrieb:
> Hier erkenne wird kein Polynom für die Prüfsummenbildung verwendet.

Was steht denn in den Anforderungen drin? Was für eine Berechnung soll 
durchgeführt werden?

von c-hater (Gast)


Lesenswert?

Patrick C. schrieb:

>>> Ich war der Meinung das die obige Implementierung ein Polynom benötigt
> für die Berechnung der Checksum
>
> Wenn es eine CRC waehre ja, aber ein Checksum ist kein CRC.

OMG. Keine Ahnung, aber große Fresse.

Auch so eine primitive Prüfsumme IST theoretisch betrachtet natürlich 
eine CRC. Es ist halt bloß halt kein "gute" CRC...

Das Polynom sollte schlicht "1" sein, wenn mich nicht alles täuscht.

von Vaterschaftstest-Beauftragter (Gast)


Lesenswert?

c-hater schrieb:
> OMG. Keine Ahnung, aber große Fresse.

Bist Du sein Bruder?

von Patrick C. (Gast)


Lesenswert?

@c-hater
> Auch so eine primitive Prüfsumme IST theoretisch betrachtet natürlich
> eine CRC. Es ist halt bloß halt kein "gute" CRC...
Nee, so eine primitive Pruefsumme ist theoretisch NICHT zyklisch. Wenn 2 
bytes verwechselt werden, wird das von eine addierung nicht detectiert. 
Von jede Cyclic Redundancy Check wird das detectiert.

Der meist primitiven CRC ist CRC-1 und das ist der einzige der 
eigentlich nicht zyklisch ist.
Quelle : https://tools.ietf.org/html/rfc3385

CRC kann benennen als Checksum aber ein Checksum braucht nicht CRC zu 
sein.

Ja, ich bin einverstanden es wird im die Sprache oft durcheinander 
benutzt, aber das ist meiner meinung das gleiche als ob man sagt es 
steht Strom auch die Buchse.

Wenn du andere Quellen hast, moechte ich die gerne wissen um wen noetig 
meine meinung beizustellen.

@run
Sorry fuer die off-topic, aber hoffentlich ist jetzt deine frage 
beantwortet

@Vaterschaftstest-Beauftragte
>Bist Du sein Bruder?
Nee, soweit ich weis gibt es keine Trollen in meine familien...

von Yalu X. (yalu) (Moderator)


Lesenswert?

c-hater schrieb:
> OMG. Keine Ahnung, aber große Fresse.

Bedeutet "c-hater", dass du c_hecks kategorisch ablehnst, vor allem
dann, wenn sie c_yclic sind? Das würde jedenfalls deine unqualifizierte
Reaktion erklären ;-)

> Auch so eine primitive Prüfsumme IST theoretisch betrachtet natürlich
> eine CRC. Es ist halt bloß halt kein "gute" CRC...

Nein, es ist natürlich keine, auch keine schlechte.

> Das Polynom sollte schlicht "1" sein, wenn mich nicht alles täuscht.

Du täuschst dich. Bei einer CRC mit Polynom 1 ist die Länge des
CRC-Werts 0. Es werden also überhaupt keine Prüfbits an die Nutzdaten
angehängt, und damit können auch keine Fehler erkannt werden.

von c-hater (Gast)


Lesenswert?

Yalu X. schrieb:

> Du täuschst dich. Bei einer CRC mit Polynom 1 ist die Länge des
> CRC-Werts 0. Es werden also überhaupt keine Prüfbits an die Nutzdaten
> angehängt, und damit können auch keine Fehler erkannt werden.

Stimmt. Das Polynom ist natürlich tatsächlich nicht 1.

Das wäre es nur in der üblichen Schreibweise, bei der das höchstwertige 
Glied nicht mitgeschrieben wird. Gerade die grenzdebile C-Wichser mit 
ihrem idiotischen Trieb, alles in die ihnen bekannten Datentypen zu 
fassen, haben ja diese völlig idiotische Konvention erfunden, weil eben 
das höchste Glied des Polynoms immer gerade nicht in ihren Datentyp 
reinpasste und sie von sowas wie einem Carry-Flag nach der reinen Lehre 
garnix wissen dürfen...

Also: das Polynom ist natürlich vollständig 0x101 (extra für dich in 
C-Notation, damit du nicht behaupten kannst, du hättest da etwas 
missverstanden). Nun darfst du nochmal argumentieren...

von Georg A. (georga)


Lesenswert?

c-hater schrieb:
> Also: das Polynom ist natürlich vollständig 0x101

Ich kann mir gerade nicht vorstellen, wie das Übertragsbit der Addition 
in die nächsthöhere Stelle bei der reinen XOR-CRCerei im Polynom 
dargestellt werden kann ;)

von Yalu X. (yalu) (Moderator)


Lesenswert?

Georg A. schrieb:
> Ich kann mir gerade nicht vorstellen, wie das Übertragsbit der Addition
> in die nächsthöhere Stelle bei der reinen XOR-CRCerei im Polynom
> dargestellt werden kann ;)

Ich auch nicht.

Aber c-hater steht wohl nicht nur für cyclic-hater und check-hater,
sondern vor allem auch für carry-hater. Er hasst die Überträge so sehr,
dass er sie einfach unter den Tisch fallen lässt :)

von Carl D. (jcw2)


Lesenswert?

Yalu X. schrieb:
>
> Aber c-hater steht wohl nicht nur für cyclic-hater und check-hater,
> sondern vor allem auch für carry-hater. Er hasst die Überträge so sehr,
> dass er sie einfach unter den Tisch fallen lässt :)

Eigentlich ist er ja ein [^a]-hater.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.