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