AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DEC 5.2 String hashen?

Ein Thema von a.def · begonnen am 2. Mai 2017 · letzter Beitrag vom 7. Mai 2017
 
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
772 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DEC 5.2 String hashen?

  Alt 2. Mai 2017, 13:41
Hallo a.def

du schreibst

Zitat:
Ist der sicher und kann nicht zurück-gerechnet werden?
Ich kann nicht abschätzen, was du einerseits mit "sicher" und andererseits mit "zurück gerechnet" meinst.

Nur soviel:
MD5 erzeugt zu einer beliebigen Zeichenkette einen 128 Bit Wert.

Die Definitionsmenge ist also unendlich gross, die Wertemenge aber umfasst lediglich 2^128 Elemente.

2^128 ist zwar auch sehr gross, aber eben nicht unendlich. MD5 bildet also eine unendlich grosse Menge auf eine endliche Menge ab. D.h. die Funktion ist zwangsläufig nicht injektiv/eineindeutig. Oder etwas anders ausgedrückt: Es liegt in der Natur dieser Funktion [generell von Hash Funktionen], dass mehrere Zeichenketten auf das gleiche Element (den gleichen Hash Wert) abgebildet werden.

Wenn zwei Zeichenketten auf den gleichen Wert abgebildet werden, dann nennt man dies im Zusammenhang mit Hash Funktionen eine "Kollision".



Wenn du also mit "sicher" meinst "Gibt es zu einem Hashwert w ganz sicher nur eine einzige Zeichenkette z für welche md5(z)=w gilt?", dann lautet die Antwort NEIN. Wie oben beschrieben kann md5 gar nicht injektiv sein. Es kann also gut sein, dass noch weitere Zeichenketten z1,... durch md5 ebenfalls auf w abgebildet werden.

Du fragst nach dem Zurückrechnen. Auch hier lautet die Antwort NEIN. [Wenn dem so wäre, dann wären alle bisherigen Kompressionsprogramme auf dem Markt Unsinn (sie sind es natürlich nicht); denn dann könnte zum Beispiel WinZip jedes Dokument dieser Welt in 2^128Bit speichern. Wir haben aber mit den Überlegungen oben gezeigt, dass dem nicht sein kann.]
Ein einfaches Beispiel dazu, welches dir zeigt, dass Zurückrechnen niemals funktionieren kann: Stell dir vor, du ermittelst für die Zahlen von 1 bis 2^128+1 [egal, ob sie binär vorliegen oder als Zeichenkette] die jeweiligen md5 Werte. Du hast dann 2^128+1 Elemente, aber wie du weisst höchstens 2^128 Funktionswerte. D.h. es muss mindestens 2 Zahlen in 1 bis 2^128+1 geben, welche durch md5 dem gleichen Wert zugeordnet werden. => Zurückrechnen geht nicht.

Injektivität/Eineindeutigkeit:
https://de.wikipedia.org/wiki/Injektivit%C3%A4t

Kollisionen bei md5:
https://de.wikipedia.org/wiki/Messag...st_Algorithm_5
Michael Gasser

Geändert von Michael II ( 2. Mai 2017 um 14:08 Uhr)
 
 


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 03:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz