Autor |
Beitrag |
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Fr 15.08.03 13:00
recall hat folgendes geschrieben: | Zitat: | 340282366920938463463374607431768211456te Datei erzeugt denselben Hash-Wert! |
Das geht doch gar nicht !! Nimm einfach mal eine Datei mit 1 Byte Länge.
Es gibt nur 256 Möglichkeiten, wie die Datei aussehen kann . |
Ok, dann gibt es für diese Datei nur 256 Möglichkeiten, aber da der Hash-Wert 128 Bit hat kann er auch mehr als 256 verschiedene Werte annehmen!  Sprich für jede der 256 Dateien kann ein eigener Hash-Wert gebildet werden. Soll heißen, in der Größenordnung von Dateien mit bis zu 16 Bytes (128Bit) ist der Hash-Wert sogar eindeutig! Für alle größeren Dateien gilt die Wahrscheinlichkeit von 1:2^128 dass sie denselben Hash-Wert erzeugen.
Zitat: | Sollte diese Zahl jedoch die Wahrscheinlichkeit angeben, die wievielte Datei unter oo-vielen den gleichen Hash-Wert erzeugen, so würde ich die Methode wegschmeißen, denn es kann genauso gut sein, dass eine Datei mit MD5("001") = MD5("101") ! |
Nein..! Hier mal ein Zitat aus meiner Fachbereisarbeit:
Zitat: | Hashfunktionen sind Einwegfunktionen die eine beliebig lange Nachricht M verarbeiten und dabei einen Hashwert h fester Länge erzeugen:
h = H(M) , wobei h die Länge m hat
Viele Funktionen akzeptieren Eingaben beliebiger Länge und erzeugen daraus eine Ausgabe fester Länge, doch Einweg-Hashfunktionen besitzen zusätzliche Eigenschaften, die diesen Namen erst rechtfertigen:
- Zu gegebenem M ist es leicht, h zu berechnen.
- Zu gegebenem h ist es schwer, ein M zu berechnen für das gilt H(M)=h
- Zu gegebenem M ist es schwer, eine andere Nachricht M' zu berechnen für die gilt H(M)=H(M')
Der Zweck von Einweg-Hashfunktionen liegt darin, einen Fingerabdruck der Eingabe anzulegen, d.h. einen Wert zu erzeugen, der etwas darüber aussagt, ob eine bestimmteEingabe aller Wahrscheinlichkeit nach mit dem tatsächlichen Original übereinstimmt. Da Hashfunktionen normalerweise mehrere Werte auf ein und denselben Wert abbilden, können wir mit ihnen zwar nicht hundertprozentig, aber mit ausreichender Sicherheit entscheiden, ob zwei Eingaben identisch sind. |
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
barfuesser
      
Beiträge: 324
|
Verfasst: Fr 15.08.03 14:18
Titel: eindeutig oder reversibel
recall hat folgendes geschrieben: | => Es gibt KEINE nicht reversible eindeutige Funktion, |
Eine eindeutige nicht reversible Funktion ist das Quadrieren einer Zahl. Eindeutig heißt, daß ich aus einem Objekt O1 mittels einer Vorschrift immer wieder nur ein und das selbe neue Objekt O2 generieren kann. Wenn das Ganze reversibel ist, handelt es sich um eine eineindeutige Abbildung, wie z.B. die Negation. Bei MD5 handelt es sich um einen eindeutigen aber nicht um einen eineindeutigen Algorithmus.
barfuesser
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 15.08.03 14:32
Der Datenbank-Spezie wird es mit Relationen beschreiben:
Relation Datei -> Hash : n -> 1
Ich habe mehrere Dateien, die den gleichen Hashcode erzeugen, aber eine Datei erzeugt immer denselben Hashcode.
Zitat: | Soll heißen, in der Größenordnung von Dateien mit bis zu 16 Bytes (128Bit) ist der Hash-Wert sogar eindeutig! |
Wenn du mit eindeutig meinst, daß dann jedem Hash nur eine Datei zugeordnet ist, liegst du falsch: Das hängt von dem verwendeten Hash ab.
Es kann in dieser Situation sein, daß der Hash eineindeutig ist, er muss es aber nicht sein.
Cu,
Udontknow
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Sa 16.08.03 09:18
Udontknow hat folgendes geschrieben: | Es kann in dieser Situation sein, daß der Hash eineindeutig ist, er muss es aber nicht sein. |
Das stimmt schon, aber allein von der Länge des Hash-Wertes wäre es möglich in dieser Größenordnung eindeutig zu sein. Und wenn der Hash gut und kollisionsfrei ist hat man gute Chancen, dass das zutreffend ist.
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Sa 16.08.03 11:13
Bei MD5 müsst ihr trotzdem beide Dateien komplett einlesen. Da kann man die auch so überprüfen und bei der ersten nicht Übereinstimmung abbrechen. MD5 hingegen muss erst einmal auf die gesamten Daten angewendet werden. Was von beiden ist dann wohl schneller? (vorausgesetzt der Unterschied der beiden Dateien ist nicht das letzte Byte)
_________________ Ist Zeit wirklich Geld?
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: So 17.08.03 13:30
@AndyB:
Wenn ich beide Hashes erstellen muss, brauche ich beide Dateien, das ist richtig.
Aber es reicht zum Beispiel völlig aus, den Hash einer heruntergeladenen Datei zu erstellen und mit dem vom Publizierer bereitgestellten Hash zu vergleichen, um eine Authentizität der Datei festzustellen.
So wird es ja bei vielen Opensource-Projekten gemacht, um Virenbefall o.ä. auszuschliessen.
Cu,
Udontknow
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: So 17.08.03 16:29
Udontknow hat folgendes geschrieben: | Aber es reicht zum Beispiel völlig aus, den Hash einer heruntergeladenen Datei zu erstellen und mit dem vom Publizierer bereitgestellten Hash zu vergleichen, um eine Authentizität der Datei festzustellen. |
Und wo war hier die Rede von einer Checksum Datei?
_________________ Ist Zeit wirklich Geld?
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: So 17.08.03 18:28
Wieso? Es geht darum, zwei Dateien zu vergleichen.
Wenn man nun nicht beide Dateien vor Ort hat, ist es sinnvoll, nicht die andere Datei erst zu besorgen und die Dateien selber zu vergleichen, sondern die Hashes zu vergleichen.
Cu,
Udontknow
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: So 17.08.03 23:18
Udontknow hat folgendes geschrieben: | Wieso? Es geht darum, zwei Dateien zu vergleichen. |
Genau.
Zitat: | Wenn man nun nicht beide Dateien vor Ort hat |
Lese dir einmal die Ausgangsfrage durch.
Zitat: | hey, ich habe zwei txt dateien und möchte gerne testen, ob der inhalt der beiden dateien gleich ist, oder nicht. (möglichst automatisch ) wisst ihr, wie ich das machen könnte?? |
_________________ Ist Zeit wirklich Geld?
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 18.08.03 07:40
Na gut! *Geschlagengeb*
Aber der Imperativ Singular von "Lesen" ist "Lies".
Cu,
Udontknow
|
|
AndyB
      
Beiträge: 1173
Erhaltene Danke: 14
RAD Studio XE2
|
Verfasst: Mo 18.08.03 09:36
Udontknow hat folgendes geschrieben: | Aber der Imperativ Singular von "Lesen" ist "Lies". |
Hey, in der Deutschen Sprache ist "alles" erlaubt.
_________________ Ist Zeit wirklich Geld?
|
|