MD5 Verschlüsselung wieder entschlüsseln?

  • VB.NET

Es gibt 50 Antworten in diesem Thema. Der letzte Beitrag () ist von eminem.

    MD5 Verschlüsselung wieder entschlüsseln?

    Hallo
    Ich habe mal eine frage zum MD5, ich benutze ein Modul das in MD5 Verschlüsselt, wie kann ich zu beispiel,
    wenn ein Verschlüsseltes Passwort in einer Textbox angezeigt wird, diesen wieder entschlüsseln, also quasi im Klartext so wie es vorher war anzeigen lassen?


    Das ist das Modul

    VB.NET-Quellcode

    1. Public Function MD5StringHash(ByVal strString As String) As String
    2. Dim MD5 As New MD5CryptoServiceProvider
    3. Dim Data As Byte()
    4. Dim Result As Byte()
    5. Dim Res As String = ""
    6. Dim Tmp As String = ""
    7. Data = Encoding.ASCII.GetBytes(strString)
    8. Result = MD5.ComputeHash(Data)
    9. For i As Integer = 0 To Result.Length - 1
    10. Tmp = Hex(Result(i))
    11. If Len(Tmp) = 1 Then Tmp = "0" & Tmp
    12. Res += Tmp
    13. Next
    14. Return Res
    15. End Function


    Ich weiß nicht ob es damit geht?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Gar nicht. MD5 (jede Hash-Funktion) ist eine Einweg-Verschlüsselung.
    Man kann (mit genügend Rechenaufwand) einen beliebigen Text finden, der denselben Hash wie das Passwort hat, aber es gibt keinen Weg das ursprüngliche Passwort aus dem Hash zurückzurechnen. Das liegt daran weil eine unendlich große Menge von Texten auf eine nur endliche Menge von Hashes abgebildet wird.
    Das stimmt doch gar nicht. Ein MD5 Hash ist IMMER 32 Zeichen lang und wenn man nur einen buchstaben verändert, verändert sich der gesamte Hash.

    Beispiel:

    Aber = 7ca78e43df368b10bb26ee4b55bda748
    aber = 9591a1a24184bd3aa191f6d590d9c3a9

    Das einzige zum "entschlüsseln" wäre Bruteforce. Also viele viele Schleifen in ein ander die alle Buchstaben durchlaufen und den Hash draus bilden und mit dem Referenz Hash vergleichen. Bei nur klein Buchstaben und 5 Zeichen noch einfach, mit Großbuchstaben scohn schwieriger, mit Zahlen und Sonderzeichen dauert es noch länger. Mit jeder Stelle steigt die Zeit expotenziell an.

    picoflop schrieb:

    Gutelaunetyp schrieb:

    Klar kann man das

    Zutreffendes bitte ankreuzen:
    [ ] Ich weiß wie eine Hash-Funktion funktioniert
    [x] Ich weiß nicht wie eine Hash-Funktion funktioniert

    Was sollte das denn jetzt?

    @Threadersteller:
    Du kannst es nicht zurück verwandeln. Das einzige, um z.B. Passwörter zu vergleichen, ist wenn du das eingegebene in einen MD5-Hash verwandelst und diesen dann mit dem in der Datenbank MD5-Hash vergleichst.
    Hi

    was mir sehr geholfen hat um all die Verschlüsselungsalgorithmen zu verstehen und auszutesten ist dieses kleine Lern Tool :

    www.cryptool.de

    Einfach mal ein bissl lesen und testen. Sind viele Algorithmen dabei und alles recht gut erklärt.


    gruss mono
    Das ist meine Signatur und sie wird wunderbar sein!
    Erstmal danke für die Vielen Antworten.

    Ich dachte immer, das man alles was man Verschlüsselt wieder zurück entschlüsseln werden kann, aber so kann man sich täuschen, welche verschlüsselung kann man gut einsetzen und ist sicher, diese aber auch wieder intern der Software entschlüsselt werden kann, ich möchte in meinem Form mit MySQL Login arbeiten, möchte aber die Zugangsdaten der Datenbank in My.Settings Verschlüsselt zwichen speichern und intern wieder auslesen, damit man nicht die Originalen Daten erkennen kann, nach jede aktion zum MySQL Server, wird 2-3 Mal das Passwort überschrieben, damit der sogenante Cache wieder Sauber ist.

    Wie kann man eigendlich die Sicherheit des eigenem Programmes überprüfen?
    man muss ja wie ein Hacker denken, oder gibt es da einfache möglichkeiten?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    eminem schrieb:

    möchte aber die Zugangsdaten der Datenbank in My.Settings Verschlüsselt zwichen speichern

    Das ist schon mal ... schlecht.
    Damit stehen die Passwörter im prinzip jedem zur Verfügung. Jedenfalls ohne Aufwnad. Im Zweifel schon, weil sie per Netzwerk übertragen werden und man nur den Netzwerkverkehr mitschneiden muss um das PW zu bekommen.
    hmm, das dachte ich mir schon fast, was kann man anders machen, damit es einigermaßen sicher ist?
    ich hab was von php gelesen, mein problem ist, ich kenne mich nur wenig mit dieser sprache aus,
    gibt es da ein fertiges script was ich nur anpassen brauche, ich weiß das klingt nach faulheit, so ist es aber nicht, ich mache vieles alleine was ich alleine machen kann,
    aber php war noch nie meine welt, deshalb wäre es von vorteil ein fertiges PHP script zu haben was man nur verändern muss.

    Oder es gibt eine andere Möglichkeit...
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    eminem schrieb:

    Erstmal danke für die Vielen Antworten.

    Ich dachte immer, das man alles was man Verschlüsselt wieder zurück entschlüsseln werden kann, aber so kann man sich täuschen, welche verschlüsselung kann man gut einsetzen und ist sicher, diese aber auch wieder intern der Software entschlüsselt werden kann, ich möchte in meinem Form mit MySQL Login arbeiten, möchte aber die Zugangsdaten der Datenbank in My.Settings Verschlüsselt zwichen speichern und intern wieder auslesen, damit man nicht die Originalen Daten erkennen kann, nach jede aktion zum MySQL Server, wird 2-3 Mal das Passwort überschrieben, damit der sogenante Cache wieder Sauber ist.

    Wie kann man eigendlich die Sicherheit des eigenem Programmes überprüfen?
    man muss ja wie ein Hacker denken, oder gibt es da einfache möglichkeiten?

    Willst du die Daten nur zwischen prüfen oder einen AutoLogin für den MySql Server?
    Denn wenn du nur zwischen prüfen willst kannst du das ruhig als MD5-Hash speichern.
    Denn du muss ja nur vergleichen ob der gespeicherte Hash gleich dem eingegebenen ist.

    Und sonst schau mal ob du eine SQLlite DLL für .NET findest welche Verschlüsselung unterstützt.
    SQLlite ist so klein das es kaum auffällt wenn du es mitlieferst.
    ja das klingt schon gut, allerdings ist mein Problem mit dem mitschneiden des MYSQL Servers noch nicht beseitigt, aber dieses SQLlite DLL, wie muss man das einsetzen, und vorallen wo, und was bedeutet das genau, was macht es, also erkennt der die MD5 und wandelt diese auf dem Server wieder um?

    man könnte es auch so machen das man ein kleines php Script schreibt, diese dann den Gespeicherten MD5 drinne hat, diesen dann wieder umwandelt, und an dem MYSQL weiter gibt, klingt aber auich wieder kompliziert
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Ja sicher, zwichen speichern wäre gut, hab das prinzip auch verstanden,
    nur es bringt ja nichts wenn mitgeschnitten werden kann bei MYSQL.
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    MD5 = Einwegverschlüsselung

    MD5 ist, wie der Titel schon sagt, eine Einwegverschlüsselung, das heißt, man kann einen Text mit MD5 verschlüsseln, ihn aber nur mit großem Aufwand bzw. garnicht mehr entschlüsseln.

    Fazit:
    Wenn du einen Text auch wieder entschlüsseln willst, rate ich dir, AES zu verwenden.

    .VB[2008] schrieb:

    MD5 ist, wie der Titel schon sagt, eine Einwegverschlüsselung, das heißt, man kann einen Text mit MD5 verschlüsseln, ihn aber nur mit großem Aufwand bzw. garnicht mehr entschlüsseln.

    Fazit:
    Wenn du einen Text auch wieder entschlüsseln willst, rate ich dir, AES zu verwenden.

    @.VB[2008]:
    Das würde ich gleich wieder vergessen! Schonmal was von "Sniffer" gehört?

    @eminem:
    Das PHP-Skript muss nicht sehr lang sein.
    auf Schattenbaum.Net/php
    steht alles zu MySQL ;)
    Du machst ein paar POST Variablen, sendest die an das Skript, dein Skript empfängt die und gibt dir den Text zurück. In der Theorie nicht schwer. Und wenn man mit MySQL klarkommt ist es in der Praxis auch einfach ;)

    PHP-Quellcode

    1. $host = $_POST['host'];
    2. $user = $_POST['user'];
    3. $pass = $_POST['pass'];
    4. $db = $_POST['db'];
    5. $tabelle = $_POST['tabelle'];
    6. $stelle = $_POST['stelle'];
    7. $verbindung = mysql_connect($host,$user,$pass);
    8. $database = mysql_select_db['db'];
    9. $sql = "SELECT " . $stelle . " FROM " . $tabelle;
    10. $query = mysql_query($sql);

    Und dann so weiter...
    Und ihr braucht jetzt nicht anfangen zu meckern wegen der Sicherheit! Ich habe das bewusst so geschrieben, damit eminem dadurch nicht gleich verwirrt wird!
    Ich danke dir, was meinst du mit sicherheit und meckern :) , ich meine gibt es da noch was zu beachten,
    weil dem phpcode verstehe ich wie du es hingeschrieben hast, kann ich diesen verwenden?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.