Ich muss einen einfachen Hash-Algorithmus implementieren.Kurzer (6 Bit) kryptografischer Schlüssel Hash
Eingabedaten:
- Wert (16-Bit-Ganzzahl).
- Schlüssel (beliebiger Länge).
Ausgangsdaten:
- 6-Bit-Hash- (Zahl 0-63).
Anforderungen:
- Es sollte praktisch unmöglich sein Hash-Wert vorherzusagen, wenn Sie den Eingabewert haben, aber nicht den Schlüssel. Genauer gesagt: Wenn ich Hash (x) für x < M kenne, sollte es schwierig sein, Hash (M) vorherzusagen, ohne den Schlüssel zu kennen.
Mögliche Lösungen:
- Halten vollständige Abbildung als Schlüssel. Also hat der Schlüssel die Länge 2^16 * 6 Bits. Es ist zu lang für meinen Fall.
- Linearer Code. Key ist eine Generatormatrix. Es ist Länge 16 * 6. Aber es ist einfach, eine Generatormatrix zu finden, die mehrere bekannte Hash-Werte verwendet.
Gibt es noch andere Möglichkeiten?
CRCs sind keine Hashes. Das OP sagt nicht, wofür er es will, aber es gibt Situationen, in denen ein CRC ein besonders schlechter Ersatz für einen Hash ist - wie in einer Hashtabelle. –
@NickJohnson warum sollte CRC nicht für eine Hashtable geeignet sein (außer dass es schnellere Methoden gibt, um einen passenden Hash zu erhalten)? – mensi
Wie Sie selbst angemerkt haben, enthalten CRCs Redundanz für eine zuverlässige Fehlererkennung, die ihre Verteilungseigenschaften beeinflusst. –