Frage zu Hash



  • Aufgrund der Natur von Hash-Werten kann nicht verhindert werden, dass zwei unterschiedliche Eingaben die selbe Ausgabe erzeugen.

    Mal angenommen, man findet zwei gleich lange, aber ansonsten völlig verschiedene Eingaben, die den selben Hash-Wert ergeben. Was passiert, wenn man beiden einen gleichen String hinzufügt? Sind die Hash-Werte danach noch immer gleich?

    Ich hab die Implementierung von MD5 und SHA-1 noch nicht so verstanden, dass ich die Frage selbst beantworten könnte



  • Vermutlich meinst du Hash-Datenstrukturen von diversen Sprachen. In der Regel ist es so gelöst, dass der Wert nicht direkt gespeichert wird, sondern eine einfach verkettete Liste, an welche alle Werte angehängt werden. So können auch mehrere verschiedene Werte mit selben Hash-Wert gespeichert werden. Und da es in der Regel maximal 2 Knoten in der Liste sind, wird die Laufzeit auch nur minimal erhöht.



  • zwutz schrieb:

    Mal angenommen, man findet zwei gleich lange, aber ansonsten völlig verschiedene Eingaben, die den selben Hash-Wert ergeben. Was passiert, wenn man beiden einen gleichen String hinzufügt? Sind die Hash-Werte danach noch immer gleich?

    idR nein. es sei denn du hast wieder das "glück" 2 Strings generiert zu haben die zufälligerweise den selben hashcode ergeben.



  • Shade Of Mine schrieb:

    zwutz schrieb:

    Mal angenommen, man findet zwei gleich lange, aber ansonsten völlig verschiedene Eingaben, die den selben Hash-Wert ergeben. Was passiert, wenn man beiden einen gleichen String hinzufügt? Sind die Hash-Werte danach noch immer gleich?

    idR nein. es sei denn du hast wieder das "glück" 2 Strings generiert zu haben die zufälligerweise den selben hashcode ergeben.

    Das hat er doch gemeint. Wenn man 2 Strings mit dem selben Hashcode hat und dann den gleichen String anhängt, will er wissen, ob sie dann immer noch den gleichen Hashcode haben.



  • wxSkip schrieb:

    Das hat er doch gemeint. Wenn man 2 Strings mit dem selben Hashcode hat und dann den gleichen String anhängt, will er wissen, ob sie dann immer noch den gleichen Hashcode haben.

    Welchen gleichen String woran hängt? Die Frage spricht doch von zwei unterschiedlichen Strings mit dem gleichen Hashwert!?



  • Tachyon schrieb:

    wxSkip schrieb:

    Das hat er doch gemeint. Wenn man 2 Strings mit dem selben Hashcode hat und dann den gleichen String anhängt, will er wissen, ob sie dann immer noch den gleichen Hashcode haben.

    Welchen gleichen String woran hängt? Die Frage spricht doch von zwei unterschiedlichen Strings mit dem gleichen Hashwert!?

    Beispiel:
    #qwertz und asdfhj haben den gleichen Hashcode
    Haben #qwertzc++0x und asdfhjc++0x immer noch den gleichen Hashcode?


  • Mod

    Bei MD5 sind die Hashes immer noch gleich, wenn man das gleiche anhängt. Zumindest wenn die Größe des Eingangsmaterials vorher ein vielfaches von 512 Bit war. Das liegt daran, dass MD5 die Nachricht in 512 Bit Blöcke aufteilt und dann die Quersumme aller einzelner Blöcke nimmt.

    Beispiel: Diese beiden html-Dateien haben den gleichen MD5-Hash (c0f3adb824590b40944614268e627421). Ich habe testhalber mal das Wort "hallo" angehängt und bekomme für beide den Hashwert acf0cce3e36c230129ded1972a5ccdb3.

    Bei SHA müsste ich mal recherchieren, wie das Verfahren genau arbeitet. Falls das auch Blockweise arbeitet, dann hat es die gleiche "Schwäche".

    edit: SHA-1 nutzt auch die Quersumme über 512-Bit Blöcke.



  • danke euch. Mehr wollte ich nicht wissen


Anmelden zum Antworten