AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prüfsummer über gewisse Anzahl Integer-Werte

Ein Thema von RalfE · begonnen am 3. Feb 2012 · letzter Beitrag vom 4. Feb 2012
Antwort Antwort
RalfE

Registriert seit: 30. Apr 2010
25 Beiträge
 
#1

Prüfsummer über gewisse Anzahl Integer-Werte

  Alt 3. Feb 2012, 08:58
Hallo,

ich bekomme über eine Maschinensteuerung eine gewisse Anzahl an Integer-Werten (Koardinaten). Über diese Werte wollte ich gern eine
Prüfsumme bilden, um festzustellen haben sich die Werte geändert oder gar ihre Reihenfolge ?

Mit welchem Algorithmus ? Gibt es dazu schon BeispielCode ?
Gruss
RalfE
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

AW: Prüfsummer über gewisse Anzahl Integer-Werte

  Alt 3. Feb 2012, 09:14
Da gibt es verschiedene Möglichkeiten.
Man angenommen, die Integerwerte liegen in einem Array vor.

1.) Summe über alle Integerwerte bilden (ein Überlauf wird dabei gezielt in kauf genommen)
2.) XOR über alle Integerwerte bilden
3.) Eine CRC32 Prüfsumme über den Speicherblock des Arrays bilden
4.) MD4 Hashwert über den speicherblock des Arrays bilden

Die Varianten 1 und 2 sind einfach und schnell zu berechnen aber nicht sehr sicher.
Eine Vertauschung zweier Werte ändert die Prüfsumme nicht.

Variante 3 ist schnell zu berechnen und die 32Bit-Prüfsumme in aller Regel ausreichend
Variante 4 ist schon sehr sicher. Prüfsumme ist 16 Bytes lang.

Man könnte statt MD4 auch MD5 verwenden; allerdings passt das einfachere und schnellere MD4 besser zur Aufgabe.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.108 Beiträge
 
Delphi 12 Athens
 
#3

AW: Prüfsummer über gewisse Anzahl Integer-Werte

  Alt 3. Feb 2012, 09:21
Prüfsumme ...
CRC?

Da gibt es Millionen ... du mußt dir nur eine aussuchen.
'ne Quersumme bilden, XOR+SHL+SHR, CRC16 oder CRC32 mit unterschiedlichen Polynomen, MD4, MD5, RipeMD160, RipeMD320, SHA und sonstige Hash-Verfahren uvm.

http://de.wikipedia.org/wiki/Pr%C3%BCfsumme
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 3. Feb 2012 um 09:44 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Prüfsummer über gewisse Anzahl Integer-Werte

  Alt 3. Feb 2012, 09:36
Hallo,
Prüfsumme bilden, um festzustellen haben sich die Werte geändert oder gar ihre Reihenfolge ?
Wie willst du das machen?
Angenommen du kriegst die Werte 1,2,3,4
Dann kriegst du die Werte 1,2,4,3.

Haben sich nun sowohl an Position drei, als auch an vier die Werte geändert und zufällig jeweils in den anderen Wert, oder...
...hat sich die Reihenfolge der Werte geändert?
Ralph
  Mit Zitat antworten Zitat
RalfE

Registriert seit: 30. Apr 2010
25 Beiträge
 
#5

AW: Prüfsummer über gewisse Anzahl Integer-Werte

  Alt 3. Feb 2012, 10:49
Hallo,

Danke für die Antworten.

Ich merke mir die Prüfsumme, hat sich die neue Prüfsumme geändert (andere Werte, Reihenfolge geändert), so wird meine Auswerte-Routine aktiv.

RalfE
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Prüfsummer über gewisse Anzahl Integer-Werte

  Alt 4. Feb 2012, 09:04
Hallo,

Danke für die Antworten.

Ich merke mir die Prüfsumme, hat sich die neue Prüfsumme geändert (andere Werte, Reihenfolge geändert), so wird meine Auswerte-Routine aktiv.
Das ist aber nicht zuverlässig. Prüfsummen werden normalerweise eingesetzt, um den korrekten Empfang der Daten beim Empfänger zu verifizieren: http://de.wikipedia.org/wiki/Pr%C3%BCfsumme

Hierbei werden Daten und Prüfsumme beim Empfänger verwendet, der Empfänger errechnet die Prüfsumme neu aus den Daten!

Wenn aber nur die Prüfsumme beobachtet wird, kann es durchaus sein dass zwei Datensätze aufeinanderfolgen, die verschieden sind aber die gleiche Prüfsumme erzeugen.

Dann würde die "Auswerte-Routine nicht aktiv".
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: Prüfsummer über gewisse Anzahl Integer-Werte

  Alt 4. Feb 2012, 13:02
Über diese Werte wollte ich gern eine
Prüfsumme bilden, um festzustellen haben sich die Werte geändert oder gar ihre Reihenfolge ?
Mit welchem Algorithmus ? Gibt es dazu schon BeispielCode ?
Mein Tipp: Lass es. Ich weis nicht, wie viele Bytes du da hast. Aber solange es nicht Gigabyte an Daten sind, ist es vermutlich schneller (und genauer!) die Daten an sich zu vergleichen.
Ein Prüfsummenalgorithmus muss ebenfalls jedes Byte der neuen Daten angucken und verrechnen. Stattdessen kannst du es auch gleich mit dem entsprechenden Byte der alten Daten vergleichen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz