FAQ Suchen Synapsis Wiki Projekte Mitgliederliste Benutzergruppen Profil Einloggen, um private Nachrichten zu lesen Registrieren Login

[PHP] md5 entcoden

 
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
thewuz
Erfahrener Benutzer


Anmeldedatum: 21.01.2007
Beiträge: 228
Wohnort: Nähe Wien
Programmiersprachen: PHP, HTML, JAVA, JavaScript
Compiler: Eclipse für JAVA

BeitragVerfasst am: 16.02.2007, 23:54    Titel: [PHP] md5 entcoden Antworten mit Zitat

Der Titel spricht wohl für sich!

Ich möchte einen md5-hash wieder normal machen und ausgeben.

Geht das? wenn ja, wie?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
synapsis
Administrator


Anmeldedatum: 15.10.2006
Beiträge: 385
Wohnort: Nahe München
Programmiersprachen: C/C++, VB, (Java), php, JS, AJAX, (Python)
Compiler: MS VS2005 SE

BeitragVerfasst am: 17.02.2007, 10:18    Titel: Antworten mit Zitat

Nein!

Das geht nicht und das soll auch nicht gehen. Es ist ja grad der Sinn eines Hashes, (auch sog. Einwegalgorithmus) dass man aus dem Hash nicht mehr auf den ursprünglichen Text schließen kann. (theoretisch wärs schon möglich, aber es würde Jahrmillionen dauern, selbst mit modernsten Clustern) Allerdings ist der Hash bei unterschiedlichem Input jeweils unterschiedlich, d.h. eindeutig.

Hashes werden benutzt um Passwörter zu speichern. Die Passwörter, die in der Datenbank dann als Hash vorliegen, werden mit dem Hash der Eingabe des Benutzers verglichen. Da ein Hash eindeutig ist, stimmen also bei Eingabe des richtigen Passwortes, die Hashes überein.

Der Vorteil dieser Variante ist, dass in der Datenbank keine Klartext-Passwörter stehen, sondern nur Hashes, mit denen ein Angreifer nichts anfangen kann.

Außerdem gibt es noch eine Möglichkeit, einen Login mit Hashes sicherer zu machen. Normalerweise wird das Passwort, welches der Benutzer zum Einloggen verwendet ja entweder per POST oder GET im Klartext verschickt. Bei einem "Man in the Middle"- Angriff, hätte der Angreifer schon das Passwort als Klartext.
Nun kann man ein JavaScript schreiben, welches das Passwort, welches der Benutzer im Formular eingibt, sofort in einen Hash umwandelt. Dann wird nur der Hash übertragen und sollten die Daten irgendwie abgefangen werden, kann der Angreifer damit (meistens) nichts anfangen.

Jedoch muss man dazusagen, dass der MD5-Hash nicht der sicherste ist. Man hat mittlerweile eine handvoll Kollisionen festgestellt. (doppelte Hash-Werte)
Der SHA-512 ist deutlich sicherer und auch länger. (512 bit) Jedoch muss man unter php eine Erweiterung einsetzten, um den SHA-Hash benutzen zu können.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 403
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 17.02.2007, 11:19    Titel: Antworten mit Zitat

Es reicht bereits einfach md5(md5($password)); zu nehmen. Da kommt kaum mehr jemand dahinter. Aber dennoch:
Es ist möglich, md5-Hashs zu entschlüsseln, aber meines Wissens nur extrem schwer.

_________________
PHP-Programmierer aus Leidenschaft.
_________________


http://www.Julian-Stier.de | T-REx 2.2
Aktuelles ( 5.5.08 ):
* CMS, Julian-Stier.de - September 2008
* T-REx 2.3.0 - 2. Quartal 2008
* GlobalIndustry - release 2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
thewuz
Erfahrener Benutzer


Anmeldedatum: 21.01.2007
Beiträge: 228
Wohnort: Nähe Wien
Programmiersprachen: PHP, HTML, JAVA, JavaScript
Compiler: Eclipse für JAVA

BeitragVerfasst am: 17.02.2007, 20:11    Titel: Antworten mit Zitat

also mal danke synapsis, so wollte ich das eigentlich auch gestalten, nur wie ich bin mach ichs natürlich wieder kompliziert und wollte das passwort vorher umwandeln

nagut
danke euch beiden
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden MSN Messenger
fhwebsite
Neuer Benutzer


Anmeldedatum: 19.08.2007
Beiträge: 5

Programmiersprachen: xHTML, CSS, PHP, MySql, minimal Java & C++
Compiler: Bloodshed Dev C++

BeitragVerfasst am: 20.08.2007, 10:32    Titel: Antworten mit Zitat

theoretisch ist es möglich die 128bit verschlüsselung zu "knacken", das funktioniert aber nur über eine datenbank. Dabei werden tausende verschiedener md5hashs gespeichert, natürlich dazugehörig die zeichenfolge die verschlüsselt wurde. nun kann man in der datenbank nachschauen, ob der hash durch zufall schon einmal vorgekommen ist. wenn ja, hat man die verschlüsselte zeichenfolge.

Alles in allem wird dabei der hash nicht geknackt, es handelt sich eher um stupides, langwieriges Ausprobieren...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PhP0Kid
Profi-Benutzer


Anmeldedatum: 05.01.2007
Beiträge: 403
Wohnort: Ellwangen (nahe Aalen)
Programmiersprachen: PHP, CSS, (X)HTML, SQL, JavaScript, C++ (nach Erfahrung von links nach rechts)

BeitragVerfasst am: 20.08.2007, 13:19    Titel: Antworten mit Zitat

broot forcing eben..
Aber selbst dann ist md5(md5($string)) immer noch so gut wie kaum knackbar.. ein Hoch auf unsere Verschlüsselungstechnik xD

_________________
PHP-Programmierer aus Leidenschaft.
_________________


http://www.Julian-Stier.de | T-REx 2.2
Aktuelles ( 5.5.08 ):
* CMS, Julian-Stier.de - September 2008
* T-REx 2.3.0 - 2. Quartal 2008
* GlobalIndustry - release 2009
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
fire90de
Neuer Benutzer


Anmeldedatum: 01.04.2007
Beiträge: 24
Wohnort: Velbert
Programmiersprachen: HTML, CSS, PHP, Turbo Pascal, bisschen JAVA
Compiler: Öh...

BeitragVerfasst am: 20.08.2007, 15:23    Titel: Antworten mit Zitat

Such einfach mal im Internet, da finden sich schon ein paar geeignete und gute Seiten, wo du nach nem md5-hash suchen lassen kannst. Die funktionieren auch, zwar nicht bei allen aber ich habe da einige herausgefunden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
synapsis
Administrator


Anmeldedatum: 15.10.2006
Beiträge: 385
Wohnort: Nahe München
Programmiersprachen: C/C++, VB, (Java), php, JS, AJAX, (Python)
Compiler: MS VS2005 SE

BeitragVerfasst am: 26.08.2007, 09:08    Titel: Antworten mit Zitat

Ja, es gibt durchaus einige HashTables, die schon einige Daten enthalten. Der MD5 sollte aber für wirklich sicherheitsbewusste Anwendungen gar nicht mehr verwendet werden, weil er Kollisionen aufweist.
Aber wenn die Hashes nur zum Vergleich beim Login in einer DB gespeichert werden, stellen solche Hash-Datenbanken ja keinerlei Gefahr dar. (wenn die db ausreichend geschützt ist)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
devkid
Neuer Benutzer


Anmeldedatum: 12.04.2007
Beiträge: 6
Wohnort: Borthen
Programmiersprachen: C/C++, HTML, CSS, PHP, SQL
Compiler: GCC, MinGW(unter Windows)

BeitragVerfasst am: 26.08.2007, 22:27    Titel: Antworten mit Zitat

So, da ich mir auch schon genug Gedanken über eine 100%ig sichere Authentifizierung(ok, 99,9999... %), muss ich sagen, dass MD5 durch Kollision gar nicht so schwer zu knacken ist. Bei einer beschränkten Passwortlänge von 8 bis 10 Zeichen(wie halt normale Passwörter so sind) ist es mit einem 4 Ghz-Prozessor locker möglich, den Hash innerhalb eines Jahres zu knacken.

Und das Verfahren über vorherige Verschlüsselung über Java-Script ist (eigentlich) auch recht sinnfrei: dann bekommt der 'Man in the middle' halt das gehashte Passwort mit und loggt sich mit diesem ein(selbstverständlich _NICHT_ mit einem normalen Browser; eher telnet).

Mir ist inzwischen aber eine ziemlich hilfreiche Methode eingefallen(die aber schwer über Java-Script realisierbar wäre):
1. Server sendet Client eine gehashte Zufallszahl
2. Client hasht das Passwort einmal
3. Client hängt die gehashte Zufallszahl an das gehashte Passwort an und hasht das ganze erneut.
4. Server macht [siehe 3.]
5. Client sendet gehashtes Gesamtergebnis an den Server.

Selbst wenn nun der 'Mitm' die Zufallszahl UND das Gesamtergebnis mitbekommt, kann er immer noch nichts damit anfangen.

_________________
Get Firefox
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Syncom.org Foren-Übersicht -> Interpretersprachen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Anhänge in diesem Forum nicht anhängen.
Du kannst Dateien in diesem Forum nicht herunterladen.


Powered by php B. B. © 2001, 2005 php B. B. Group
Template xabbBlue für php B. B. Foren - created by php b. b. styles
Modified by synapsis
Protected by CTracker