2010-12-10 6 views
2

Ich habe über MD5-Verschlüsselung mit Java gelesen. Und ich habe mich gefragt, wie es sicher sein kann, während Sie nur ein für allemal den Hash jeder möglichen Zeichenfolge berechnen können. Das würde sicher etwas dauern, aber sobald es fertig ist, können Sie einfach alle Paare in einer Datenbanktabelle speichern und schnell nach einem beliebigen Hashcode in dieser Tabelle suchen ... oder?Wäre MD5-Verschlüsselung nicht Reverse-Engineering, wenn der Hash jeder Zeichenfolge ein für allemal berechnet wird?

Was fehlt mir?

Vielen Dank im Voraus.

+5

Während ich auf eine tatsächliche Antwort warte, schlage ich vor, einen Blick auf den Wikipedia-Eintrag für Rainbow Tables (http://en.wikipedia.org/wiki/Rainbow_table) zu werfen. – Levi

+2

Können Sie eine Liste aller möglichen Strings veröffentlichen, um uns zu beantworten? –

+0

Danke Levi, interessanter Artikel. – kgautron

Antwort

5

MD5 generiert 2^128 mögliche Werte, so dass Sie mindestens 2^128 Strings benötigen, die für eine vollständige Abdeckung hashed sind. Hashing 2^32 Saiten jede Sekunde (was A LOT ist) benötigen Sie 79228162514264337593543950336 Sekunden, die 2512308552583217199186 Jahre ist.

Persönlich erwarte ich nicht, so lange zu dauern. Und es ist durchaus möglich, dass das Universum auch nicht wird.

+1

Danke für Ihre Antwort Blaze, aber da wir Passwörter denken, die meiste Zeit wird es zwischen 5 und 12 Zeichen (natürlich etwas länger, aber die meisten von ihnen ist weniger als 12 I Gess), und die Menge der möglichen caracter verwendet ist viel weniger als 100 verschiedene caracters. Es muss also etwas im Bereich der 100^12-String Hash geben, um die überwiegende Mehrheit der Passwörter abzudecken. Was scheint leicht berechenbar richtig? – kgautron

+1

Jede vernünftige Sicherheitslösung führt Hash-Passwörter mit Salz aus, was Ihnen 8 zusätzliche zufällige Zeichen und 50^8 = 2^47 Multiplikator für die Zeit und den Speicherbedarf gibt. – blaze

+0

Ok ich sehe, danke Blaze;) – kgautron

Verwandte Themen