Gibt es eine Funktion, die den Gegenteil eines Hash berechnet?
Kann man eine Hash-Funktion erstellen, die für ähnliche Eingabedaten nahe beieinanderliegende Hashs berechnet?
Für gewöhnlich ist der Zweck einer Hash-Funktion, eine Eingabemenge beliebiger Größe auf eine Ausgabe fester Länge abzubilden. Der Hash-Wert ist dabei eine Art Fingerabdruck der Eingabedaten und sollte idealerweise einzigartig sein. Es sollte nicht möglich sein, von einer Hash-Wert zurück zur ursprünglichen Eingabe zu gelangen (außer durch Brute-Force-Angriffe). Zudem sollten ähnliche Eingabedaten zu unterschiedlichen Hash-Werten führen um eine Kollisionsresistenz zu gewährleisten.
Es gibt jedoch keine Funktion die den "Gegenteil"-Effekt eines Hashs berechnet, also dass ähnliche Eingabedaten zu nahe beieinanderliegenden Hash-Werten führen. Eine solche Funktion wäre nicht kryptografisch sicher und würde den Zweck der Hash-Funktion, Daten zu verbergen und den Hash unvorhersagbar zu machen, unterlaufen.
Dein Vorschlag die Eingabedaten als Zahlen zu interpretieren und diese linear zu kombinieren, führt nicht zu nahe beieinanderliegenden Hash-Werten. Es würde immer noch eindeutige Hash-Werte erzeugen, da jeder Buchstabe seinen eigenen Wert hat und die Reihenfolge der Buchstaben den Hash-Wert beeinflusst. Es würde also keinen Unterschied zur Verwendung einer herkömmlichen Hash-Funktion wie SHA-256 machen.
Wenn du ähnliche Eingabedaten hast und möchtest, dass ihre Hash-Werte nahe beieinanderliegen, bietet sich die Verwendung einer Salzfunktion an. Beim Salzen wird eine zufällige Zeichenkette (Salz) zu den Eingabedaten hinzugefügt, bevor der Hash berechnet wird. Dadurch erhalten ähnliche Eingabedaten unterschiedliche Hash-Werte. Das Salz kann beispielsweise aus einer Kombination von Zufallszahlen und der Eingabe selbst bestehen.
Es ist ebenfalls möglich, mehrere Hash-Funktionen zu kombinieren um eine "verteilte" Eigenschaft zu erreichen. Das bedeutet, dass ähnliche Eingabedaten zu ähnlichen Hash-Werten verschiedener Hash-Funktionen führen. Dies bietet jedoch keine Garantie für nahezu identische Hash-Werte und erfordert zusätzlichen Aufwand bei der Implementierung.
Um die genaue Anforderung deiner Übung zu verstehen und eine geeignete Lösung anzubieten wäre es hilfreich weiterhin Informationen über das Ziel und den Zweck deiner Aufgabe zu haben. Kryptografisch sichere Hash-Funktionen sind so konzipiert, dass sie eine Einwegfunktion darstellen und es schwierig machen, von einem Hash-Wert auf die ursprünglichen Daten zurückzuschließen.
Es gibt jedoch keine Funktion die den "Gegenteil"-Effekt eines Hashs berechnet, also dass ähnliche Eingabedaten zu nahe beieinanderliegenden Hash-Werten führen. Eine solche Funktion wäre nicht kryptografisch sicher und würde den Zweck der Hash-Funktion, Daten zu verbergen und den Hash unvorhersagbar zu machen, unterlaufen.
Dein Vorschlag die Eingabedaten als Zahlen zu interpretieren und diese linear zu kombinieren, führt nicht zu nahe beieinanderliegenden Hash-Werten. Es würde immer noch eindeutige Hash-Werte erzeugen, da jeder Buchstabe seinen eigenen Wert hat und die Reihenfolge der Buchstaben den Hash-Wert beeinflusst. Es würde also keinen Unterschied zur Verwendung einer herkömmlichen Hash-Funktion wie SHA-256 machen.
Wenn du ähnliche Eingabedaten hast und möchtest, dass ihre Hash-Werte nahe beieinanderliegen, bietet sich die Verwendung einer Salzfunktion an. Beim Salzen wird eine zufällige Zeichenkette (Salz) zu den Eingabedaten hinzugefügt, bevor der Hash berechnet wird. Dadurch erhalten ähnliche Eingabedaten unterschiedliche Hash-Werte. Das Salz kann beispielsweise aus einer Kombination von Zufallszahlen und der Eingabe selbst bestehen.
Es ist ebenfalls möglich, mehrere Hash-Funktionen zu kombinieren um eine "verteilte" Eigenschaft zu erreichen. Das bedeutet, dass ähnliche Eingabedaten zu ähnlichen Hash-Werten verschiedener Hash-Funktionen führen. Dies bietet jedoch keine Garantie für nahezu identische Hash-Werte und erfordert zusätzlichen Aufwand bei der Implementierung.
Um die genaue Anforderung deiner Übung zu verstehen und eine geeignete Lösung anzubieten wäre es hilfreich weiterhin Informationen über das Ziel und den Zweck deiner Aufgabe zu haben. Kryptografisch sichere Hash-Funktionen sind so konzipiert, dass sie eine Einwegfunktion darstellen und es schwierig machen, von einem Hash-Wert auf die ursprünglichen Daten zurückzuschließen.