URL: https://www.overclockers.at/coding-stuff/java_md5-hash_207149/page_1 - zur Vollversion wechseln!
hallo!
ich möchte in einer java-applikation das passwort beim login/registrierung in einen md5-hash umwandeln und dann in einer datenbank speichern/vergleichen.
dazu verwend ich MessageDigest. nur leider wirft mir die funktion
Integer.toHexString() alle "0"er (in worten: nuller) aus dem hash raus.
hier mal die klasse, mit der ich gerade teste:
Code:public static void main(String[] args) throws Exception { /* Berechnung */ MessageDigest md5 = MessageDigest.getInstance("MD5"); md5.reset(); md5.update("asd".getBytes()); byte[] result = md5.digest(); /* Ausgabe */ StringBuffer hexString = new StringBuffer(); for (int i=0; i<result.length; i++) { hexString.append(Integer.toHexString(0xFF & result[i])); } System.out.println("MD5: " + hexString.toString()); }
Also ich hab auch mal ne Byte[] to String funktion gebraucht im selben Zusammenhang.
Code:private static String getHexString(byte[] bytearray) { String result = ""; for(int i = 0; i < bytearray.length; i++) { char b = (char) (bytearray[i] & 0xFF); if(b < 0x10) { result = result + "0"; } result = result + (String) (Integer.toHexString(b)); } return result; }
yeah! funktioniert wunderbar!
ich danke dir
wieso nimmst ned die funktion von der datenbank her?
edit: grad gesehen, dass da nirgends was von datenbank steht
edit2: da steht ja doch was von datenbank. danke an colo, der mich freundlicherweise auf unglaublich nette art und weise darauf hingewiesen hat.
jaja ich arbeite schon mit einer datenbank. nur liegt diese auf einem server und ich greif übers inet drauf zu. wenn ich jetzt diese funktion nutzen wollte, müsste ich das passwort zuerst als plaintext zur db übertragen, was ich ja nicht will...
Und TLS ist keine Alternative?
klar wäre das auch eine möglichkeit! nur denke ich dass die umsetzung und dann natürlich auch die übertragung aufwendiger wäre als es wirklich nötig ist. und bei dem programm ist es mir nur wichtig, dass das passwort verschlüsselt übertragen wird.
Wieso überhaupt MD5 - das istja schon lange genackt? Da kannst es gleich weglassen..
also das wäre mir neu, dass jeder x-beliebige mensch einfach so md5 knacken kann!? die grundlagen für jedes gute passwort sind glaub ich jedem bekannt, und wenn man die auch anwendet, kannst gleich mal die dictionary-attack vergessen. sicher hast dann noch die brute-force, aber das kann schon ein weilchen dauern, bis da mal ein ergebnis rausschaut...
http://www.win.tue.nl/hashclash/SoftIntCodeSign/
ok klar wirds immer methoden geben um etwas zu manipulieren, nur sag mir mal bitte, wie du dieses konzept auf meinen login überträgst? du gibst lokal dein passwort ein, dieses wird dann in einen md5-hash umgewandelt und so an die db gesendet. dort wird dann verglichen.
Du willst Sicherheit durch MD5 erreichen.
MD5 ist aber unsicher, kann gecrakt werden z.b mit ner PS3.
Wenn du wirklich Sicherheit erreichen willst soltest du eine sicheres Hashverfahren benutzen, ansonsten ist es sinnlos.
Oder wozu sendest du dann nicht gleich die Cleartextpws an die DB, wenn du dadurch nicht Sicherheit erreichen willst.
für meine zwecke reichts vollkommen. es is ein projekt für meine fh und mir is es ehrlich gsagt sch***egal ob da jemand ein passwort knackt oder nicht. würds hingegen sehr amüsant finden, wenn sich dann jemand wirklich die mühe macht, sich hinzusetzen um das passwort eines accounts für ein wirtschaftssimulations-spiel zu knacken
wenn ich etwas wirklich sicher haben will, is es sowieso klar, dass ich ssl oder was weiß ich, verwend... sei mir nicht bös, aber ich mag da jetzt nicht aus einer mücke einen elefant machen
Code:MessageDigest md5 = MessageDigest.getInstance("SHA-1");
Zitat von Zorrfür meine zwecke reichts vollkommen. es is ein projekt für meine fh und mir is es ehrlich gsagt sch***egal ob da jemand ein passwort knackt oder nicht. würds hingegen sehr amüsant finden, wenn sich dann jemand wirklich die mühe macht, sich hinzusetzen um das passwort eines accounts für ein wirtschaftssimulations-spiel zu knacken
wenn ich etwas wirklich sicher haben will, is es sowieso klar, dass ich ssl oder was weiß ich, verwend... sei mir nicht bös, aber ich mag da jetzt nicht aus einer mücke einen elefant machen
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025