2016-11-25 3 views
0

Ich möchte einen Hash von einigen Daten generieren. Durch einige Hash-Algorithmen konnte ich bcrypt und PBKDF finden, die für meine Anwendung am besten geeignet sind. Es kann der Fall sein, dass mit den verschiedenen Daten Algorithmus einen gleichen Hash generiert (wie in MD5, könnte es den gleichen Hash für andere Art von Daten generieren).Generiert PBKDF2 den eindeutigen Hash?

Durch die Überprüfung vieler Fachkenntnisse ist bcrypt der beste sichere Hash-Algorithmus und bietet seine Eindeutigkeit unter verschiedenen Hashes.

Aber bietet die PBKDF2 die Einzigartigkeit für Hash?

Edit 1

Ich brauche Hash mit den gleichen Eingangsdaten zu erzeugen (Raute-Taste mehr als einmal für denselben Eingang erzeugt werden), aber es sollte nicht denselben Hash für unterschiedliche Eingangsdaten generiert (Macht geschieht in einigen Hash-Algorithmen).

+1

Erstens ist dies das falsche Forum. Zweitens, welche Eigenschaften benötigen Sie eigentlich und was wollen Sie erreichen? –

+0

Möchten Sie kryptografische Schlüssel basierend auf dem Kennwort generieren oder nur eine eindeutige Kennung für einige Daten erhalten? –

+0

Ich möchte kryptografischen (Hash) Schlüssel basierend auf einem eindeutigen Bezeichner, und dieser Hash-Schlüssel sollte eindeutig identifizieren (sollte nicht den gleichen Schlüssel mit anderen ID/Passwort haben). Meine Sorge ist, dass es Fälle geben könnte, in denen der Hash-Algorithmus den gleichen Hash-Schlüssel für unterschiedliche ID/Passwort erzeugt. Also, PBKDF2 kümmert sich darum wie bcrypt? – iTink

Antwort

1

Algorithmen wie einer der SHA-2 genügen. Der erzeugte Hash ist nicht eindeutig für die Nachricht. Es ist sogar richtig, dass es eine unendliche Anzahl von Nachrichten gibt, die auf denselben Wert hashen. Der Trick ist, dass es unmöglich ist, eine der anderen Nachrichten zu finden, die diesen Hash erzeugen.

Die Wahrscheinlichkeit, eine Kollision zu erzeugen, wenn zwei Hashes mit verschiedenen Nachrichten generiert werden, entspricht 1/2^256 für SHA-256. Sie könnten jedoch Hashes generieren und speichern und dann die Wahrscheinlichkeit berechnen, dass eines der möglichen Paare identisch ist. In diesem Fall ist das Geburtstagsproblem in Kraft. Aus diesem Grund bietet ein Hash nur die Hälfte der Sicherheit. Die Wahrscheinlichkeit, eine Kollision zu erzeugen, die 2^128 Hashes ergibt, ist (ungefähr) 1/2^128 oder 1 in 340282366920938463463374607431768211456. Aus diesem Grund müssen Sie sich nur um Kollisionen in gebrochenen Hash-Funktionen wie MD5 (und möglicherweise SHA-1 in Die nahe Zukunft).

Tatsächlich ist der innere Zustand von PBKDF2 identisch mit dem internen Hash, der verwendet wird. Die Verwendung von PBKDF2 (neben der Key Derivation Funktion anstelle eines Hash) wird Ihnen überhaupt nicht helfen. Es ist genauso anfällig (oder eher nicht anfällig) für Kollisionen als der innere Hash.

+0

Danke Maarten für die Klarstellung. (y) – iTink

Verwandte Themen