Erzeugen von MD5-oder SHA1-hash-code, long (64-bits)
Brauche ich zur Berechnung der hash-code einen string auf und speichern es in einem 'long' variable.
MD5 und SHA1 produzieren hash-codes, die mehr als 64 bit (MD5 - 128 bit, SHA1 mit 160 bit).
Ideen jegliche eine?
Cheers,
Doron
- Eine Idee: nicht. Warum tun Sie denken, Sie brauchen, um dies zu tun?
- Wahrscheinlich, weil Sie wollen, es zu benutzen, wie eine nicht-kryptographische hash als schwach zu überprüfen, um sicherzustellen, dass Sie nicht erzeugen mehrere von der gleichen Sache, und nicht speichern wollen, eine Menge von hexadezimal-Zeichenfolgen, die die 128-bit-hashes.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie kürzen Sie den hash und verwenden nur die ersten 64 bits. Der hash wird etwas weniger stark, aber die ersten 64 bit sind immer noch sehr wahrscheinlich, einzigartig zu sein.
Für die meisten Anwendungen von hash-dies ist sowohl eine gemeinsame und völlig akzeptable Praxis.
Können Sie auch speichern Sie die komplette hash in zwei 64-bit-Ganzzahlen.
Ich bin mit diesem (Java):
Den FNV Hash ist ziemlich einfach zu implementieren. Erweitern wir es auf 64 bit und es funktioniert sehr gut. Mit ist es viel schneller als computing MD5 oder SHA1 und dann abschneiden des Ergebnisses. Wir aber verlassen Sie sich nicht auf es für kryptographische Funktionen-aus-hash-Tabellen und so.
Mehr Informationen über FNV, mit source-code und detaillierte Erläuterungen: http://isthe.com/chongo/tech/comp/fnv/
XOR die bits zusammen? E. g. für MD5, bits 0-63 XOR bits 64-127, voila, 64 bits. Dadurch erhalten Sie einen schwächeren hash, überprüfen Sie, ob das akzeptabel für Sie.
(auch, wenn die Umgebung ist extrem eingeschränkt - z.B. embedded-Geräte - es ist eine Frage des "warum tun Sie müssen gekürzt werden?")
Können Sie auch spielen Sie mit verschiedenen hash-algorithmen mit FooBabel Hasher
Was wäre die Wahrscheinlichkeit für eine Kollision als Ergebnis einer XOR-Operation zwischen den ersten 64-bits und die letzten 64 bit?