Prüfsumme?

Maik20

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem.

Ich habe eine Kolonne von Zahlen, welche die IDs von Einstellungsoptionen wiedergeben z.B.

34 533 12 57 52 83 90 ...

Ich benötige eine eindeutige Prüfsumme mit deren Hilfe ich prüfen kann ob sich an den Einstellungen was geändert hat.

Folgendes geht nicht:
345331257528390
= 34 533 12 57 52 83 90
= 345 33 1 257 5283 90

Folgendes geht:
034533012057052083090
(alle Zahlen sind 3-Steller)

Das Problem welches ich jedoch habe, die Prüfung ob alles OK ist macht keine Maschine sondern ein Mensch (daran gilt es nichts zu ändern!). Da ich jedoch ca. 200 Optionen habe kann die Zahl nicht mal eben mit einem Blick geprüft werden.

Meine Idee ist jetzt die Zahlen nicht zur Basis 10 sondern zu einer anderen Basis auszudrücken. Ähnlich der Umrechnung von einem Binärsystem in ein 10er System. Dabei wird die Zahl kürzer.

Daher nun auch die Fragen:
1) Hat hier jemand bedenken das es nicht funktioniert?
2) In welches System?
3) Wie kann ich in PHP das ganze Umrechnen?
 
Hi,

Ich weiß nicht genau, ob ich dich richtig verstanden habe, aber wäre da nicht CRC32 oder so was auch möglich? ich mein, damit lassen sich Änderungen feststellen...

Eine einfache andere Möglichkeit wäre, die Quesumme aller Zahlen mitzu übertragen. Damit könnte man auch einfache Änderungen feststellen :)

Gruß
BK
 
CRC32 sagt mir gerade nichts. Es geht wirklich um eine "Sichtprüfung" stimmen die Zahlen auf dem Blatt mit dem auf dem Bildschirm überein. Die Zahlen können natürlich durch den Nutzer eingegeben und dann abgeglichen werden. Aber gib mal 200 Ziffern ein ;-)

Daher versuche ich die Zahlen so kurz wie möglich zu machen.

Eine Quersumme scheidet meiner Meinung nach aus, da:
12 + 8 = 20
8 + 12 = 20
 
Hi,

CRC32 wird zum Beispiel bei Zip-Archiven als Prüfsumme verwendet. Diese sieht beispielsweise so aus:

A80BF30D

Gleiche Zahlenreihe ergibt gleiche Prüfsumme, wird nur eine Ziffer verändert, so kommt eine stark utnerschiedliche Prüfsumem raus.

Bei der quersumme hast du mich anscheinend missverstanden. Damit wird der Wert jeder Ziffer addiert, nicht jeder Zahl.

Ein Beispiel, wie ich mir meine beiden Vorschläge vorstellen könnte:

Code:
15 36 7 214

Qersumme: 29
CRC32:    3A20267E


15 36 7 213

Qersumme: 28
CRC32:    A444B3DD


15 36 8 213

Qersumme: 29
CRC32:    2614240C

Wie man hier aber sieht, ist die Quersumme wirklich nur provisorisch. Die CRC32-Summe ist davon unabhängig, jedoch für einen Menschen sehr abstrakt.

Gruß
BK
 
Was habt ihr immer mit der Quersumme?
Damit klappt es dann noch noch weniger?

Beispiel:
PHP:
 $daten = 41;
 function Quersumme($zahl) 
{ 
  settype($zahl, "string"); 
  $res = 0; 
  for($i=0; $i<strlen($zahl); $i++) 
  { 
    $res = $res + $zahl[$i]; 
  } 
  return $res; 
}
 echo(crc32(Quersumme($daten)));

Also 23, 41, 14 usw. wären alle gleich.
Einfach crc32(345331257528390) oder md5(345331257528390) ^^
 
CRC32 klingt perfekt.

Bzgl. der Quersumme muss ich Steusi zustimmen. Das wird nicht klappen. Alleine schon da

1 + 2 = 3 und 2 + 1 = 3 ist.

Danke für eure Hilfe
 
Was habt ihr immer mit der Quersumme?
Damit klappt es dann noch noch weniger?

Hi,

du hast mich da anscheinend auch falsch verstanden. Ich habe 2 Möglichkeiten genannt, die sollten nicht kombiniert werden.
Natürlich ist das ein Käse, weil da ja die Entropie für CRC32 kleiner ist :P

Naja, Quersumme war ja eh nur am Anfang eine Idee. Doch in meinem letzten Post zeige ich ja eh, dass das so nicht geht.

Deshalb steht unterhalb der Quersumme die CRC32 Prüfsumme, damti man sieht, dass diese wirklich bei jeder Reihe anders ist.

Gruß
BK
 
Zurück