Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Welcher Algo für Checksumme einer Datei (https://www.delphipraxis.net/53003-welcher-algo-fuer-checksumme-einer-datei.html)

kalmi01 8. Sep 2005 10:08


Welcher Algo für Checksumme einer Datei
 
Hallo,

ich möchte für Dateien eine Checksumme erstellen, um vergleichen zu können, ob 2 Dateien gleichen Namens auch identisch sind.
Die Checksumme der "Original-Datei" soll in einer Textdatei gespeichert werden, z.B.:
trallala.exe 367fd9
ups.bat d87

Anschliessend will ich die Checksummendatei abarbeiten und für die entsprechenden lokalen Files eine Checksumme ermitteln und mit der Hinterlegten vergleichen.
Das Verfahren muss eindeutig sein und schnell.
Schnell ist wichtig, da ca. 5000 Dateien gescannt werden müssen.

PMM 8. Sep 2005 10:43

Re: Welcher Algo für Checksumme einer Datei
 
Hallo Michael,
schau mal bei JEDI in der JCLMath.pas UNIT nach. Dort gibt es die CRC16 / CRC32 in verschiedenen Varianten.
Es ist dir schon klar, dass "eindeutig" hier nur bedeutet, das jeder Datei eine wohldefinierte CRC zugeordnet werden kann und nicht, dass garantiert ist, dass unterschiedliche Dateien auch garantiert unterschiedliche CRCs bekommen?
Also: unterschiedliche CRC bedeutet unterschiedliche Datei - aber gleiche CRC heisst nicht zwingend gleiche Datei!
Gruß PMM

ste_ett 8. Sep 2005 11:07

Re: Welcher Algo für Checksumme einer Datei
 
Wenn du 100% Garantie haben willst, musst du sie einlesen und mit einander vergleichen.

richard_boderich 8. Sep 2005 11:26

Re: Welcher Algo für Checksumme einer Datei
 
das stimmt, ist aber aus performancegruenden nich so toll. er brauch ja nur dateien gleicher groeße
direkt binaer vergleichen

kalmi01 8. Sep 2005 12:19

Re: Welcher Algo für Checksumme einer Datei
 
Hi,

Binärvergleich fällt gänzlich weg.
Wenn sich bei 5000 Dateien nur 1 geändert hat, kopier ich 1 und vergleiche ich 4999 mit gleicher Grösse oder Datum.
Da kann ich auch gleich alles kopieren.

Ca. 50 User melden sich (fast) gleichzeitg an.
Einige davon über ISDN/VPN.

Ich glaube, ich nehme SHA-1 Hashsumme her.

PMM 9. Sep 2005 14:15

Re: Welcher Algo für Checksumme einer Datei
 
Was immer du auch nimmst, das Problem bleibt gleich: Bei gleicher CRC/Hash/WasAuchImmer und gleichlangen Dateien, kann nur ein erweiterter Vergleich entscheiden, ob die Dateien wirlich gleich sind. Garantiert ist immer nur der umgekehrte Fall: Unterschiedliche CRC/Hash/Irgendwas bedeutet unterschiedliche Datei. Wenn dem nicht so wäre, hätte man ja den ultimativen "Zipper" gefunden (und neben bei noch die gesamte Informatik, nebst aller Randgebiete (Mathematik usw.) auf den Kopf gestellt...), da man ja jeder kurzen CRC/Hash/Irgendwas genau eine (auch noch beliebig lange..) Datei zuordnen könnte! Optimieren kann man nur die Wahrscheinlichkeit, das unterschiedlichen Dateien gleiche Kontrollsummen zugeordnet werden - vermeidbar ist dies nicht.
Gruß PMM

kalmi01 9. Sep 2005 14:21

Re: Welcher Algo für Checksumme einer Datei
 
Hallo PMM,

wichtig ist für mich, zu erkennen, wenn 2 Dateien (mit hoher Wahrscheinlichkeit) nicht identisch sind.

PMM 9. Sep 2005 16:32

Re: Welcher Algo für Checksumme einer Datei
 
Nicht identisch sind 2 Dateien (und zwar sicher), wenn ihre CS unterschiedlich ist. Da gibts keinen Zweifel. Die Annahme das 2 Dateien mit gleicher Checksumme inhaltsgleich sind ist theoretisch mit einer Wahrscheinlich von 1-(2^n/2^(m*8 )) n=Länge der CRC in Bit, m=mittlere Dateilänge in Byte) falsch, wenn ich mich noch recht erinnere (ist verdammt lang her). Praktisch ist es schwer abzuschätzen, da man die theor. möglichen 2^(m*8 ) Dateien natürlich nicht annährend wirklich ausschöpft und unkalr ist, wie der gewählte CS Algor. die möglichen 2^n CS-Werte auf den Bereich der möglicherweise vorkommenden Dateiinhalte verteilt.
Gruß PMM


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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