WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Java, MD5 and so on... (http://www.wcm.at/forum/showthread.php?t=94211)

blauesau 15.04.2003 19:45

Java, MD5 and so on...
 
Hi, ich hab da ein kleines Problem: Die Kurzfassung: Ich muss ein Passwort verschlüsselt abspeichern und natürlich später wieder verifizieren können. Das ganze geschieht mit MD5 und ich habe es wie folgt gelöst:

Code:

String s = txtInput.getText();
    try {
              MessageDigest md = MessageDigest.getInstance("MD5");
              md.update(s.getBytes());
              byte[] sbe = md.digest();

              pw = sbe;    //globale Variable


              monitor.append(Integer.toString(sbe.hashCode())+"\n");
     
        //Verschl. PW in ein Textfeld schreiben
              txtEncrypted.setText(sbe.toString());
        }
        catch (NoSuchAlgorithmException ex) {}

Das erzeugt mal aus dem String s einen MD5-verschlüsselten byte[] Wert.

Das Überprüfen funktioniert prinzipiell auch, wenn ich byte[] pw hernehme und das "neue" damit zu überprüfende Passwort auch ein byte[] ist (b2 is das zu überprüfende Passwort):

Code:

try {
              MessageDigest md = MessageDigest.getInstance("MD5");
              md.update(txtCompare.getText().getBytes());
              byte[] b2 = md.digest();

              if(md.isEqual(pw,b2)) {
                monitor.append("Bingo!\n");
              }
              else {
                monitor.append("Leider nein...\n");
              }

        }
        catch (NoSuchAlgorithmException ex) {}

Soweit so gut. Mein Problem nun, dass ich byte[] pw gerne abspeichern würde und zwar als String. Allerdings funktioniert das nicht so wie ich möchte, denn wenn ich sage:

String string = pw.toString();
und
byte[] b = pw.getBytes();

funktioniert der Vergleich "if(md.isEqual(b,b2))" plötzlich nicht mehr.

Ich hoffe, meine Schilderung ist nachvollziehbar?! ;)
Falls mir wer helfen kann, wäre das wirklich supertoll!

Danke schon mal und
liebe Grüße,

bs

blauesau 16.04.2003 12:34

Ich habe jetzt mal folgendes probiert:
Code:

String st;
for(int i=0; i<pw.length(); i++) {
  st+= Byte.toString(pw[i]);
}

Da entsteht dann wieder ein ganz anderer String, der schon wesentlich mehr nach MD5 aussieht... ;)

Nur wie, nur wie bekomm ich den wieder in ein byte[]... :confused:

:heul: :heul: :heul:

:D

gerngroh 16.04.2003 19:03

bytes[] b = st.getBytes();

blauesau 16.04.2003 19:25

Wie bereits erwähnt funktioniert das leider nicht...
Bzw. ich glaube, dass der Fehler bei der to-String-Umwandlung liegt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag