while-Schleife

der Prof

Mitglied
Hallo,

ich habe folgendes Problem..

das hier..
Java:
        JPasswordField passField = new JPasswordField(10);
	passField.setEchoChar(' ');
	JOptionPane.showMessageDialog ( null, passField, "Passwort: ", JOptionPane.OK_OPTION );
	char[] chars = passField.getPassword();
	BenutzerPassEingabe = new String(chars);

soll so lange ausgeführt werden bis die "BenutzerPassEingabe" mit der "statischen Variable" "Passwort" übereinstimmt..

Das Problem ist "BenutzerPassEingabe" hat keinen wert.. und da ist nochwas.. die Variable "Passwort" hat den wert = "202cb962ac59075b964b07152d234b70" also ein hash code.. ich glaube das heisst der algorithmus muss auch in diese while-Schleife damit auf true geprüft werden kann..

hier der "geklaute" code..
Java:
        MessageDigest mdpass = null;
	byte[] encryptMsgpass = null;

	try {
		mdpass = MessageDigest.getInstance( "MD5" );	// getting a 'MD5-Instance'
		encryptMsgpass = mdpass.digest(BenutzerPassEingabe.getBytes());		// solving the MD5-Hash
	}catch (NoSuchAlgorithmException e) {
		System.out.print("No Such Algorithm Exception!");
	}
		
	String swappass="";									// swap-string for the result
	String byteStrpass="";								// swap-string for current hex-value of byte
	StringBuffer strBufpass = new StringBuffer();
	
	for(int i=0; i<=encryptMsgpass.length-1; i++) {
		
		byteStrpass = Integer.toHexString(encryptMsgpass[i]);	// swap-string for current hex-value of byte
		
		switch(byteStrpass.length()) {
		case 1:											// if hex-number length is 1, add a '0' before
			swappass = "0"+Integer.toHexString(encryptMsgpass[i]);
			break;
			
		case 2:											// correct hex-letter
			swappass = Integer.toHexString(encryptMsgpass[i]);
			break;
			
		case 8:											// get the correct substring
			swappass = (Integer.toHexString(encryptMsgpass[i])).substring(6,8);
			break;
		}
		strBufpass.append(swappass);					// appending swap to get complete hash-key
	}
	BenutzerPassEingabe = strBufpass.toString();		// String with the MD5-Hash

leider kenne ich mich mit (while) do/while oder for Schleifen nicht aus.. deswegen komme ich nicht weiter :-)

zerix vielleicht kannst du mir helfen..

MfG

*Edit: "123" = "202cb962ac59075b964b07152d234b70"
 
Zuletzt bearbeitet:
Hallo,

das ist schlecht, wenn du programmieren willst und dich nicht mit den grundlegendsten Konstrukten der Programmierung auskennst.

Ich hab dir mal ein Link rausgesucht, da kannst du dir mal Schleifen anschauen. Dann müsstest du auch alleine weiterkommen.

Wenn ich dir jetzt sage wie es funktioniert, weißt du immer noch nicht mehr über Schleifen und du musst nächstes mal wieder nachfragen und das soll ja nicht der Sinn der Sache sein.

http://www.galileocomputing.de/open...02_006.htm#mj0ccd2acc1dc0c8b3841ed48a990ea232

MFG

zEriX
 
Hallo,

Ja stimmt :-) da hast du wohl recht.. so ein zufall ich hab das buch "Java ist auch eine Insel" gerade eben vor mir liegen :-)

ich werd dan mal kucken wie ich das hinbekomme..

MfG
 
so endlich..

Java:
		do {
			if (benutzerNameEingabe.equals(benutzername)) {
				JPasswordField passField = new JPasswordField(10);
				passField.setEchoChar(' ');
				JOptionPane.showMessageDialog(null, passField,
						"Enter password", JOptionPane.OK_OPTION);
				char[] chars = passField.getPassword();
				benutzerPassEingabe = new String(chars);

				MessageDigest mdpass = null;
				byte[] encryptMsgpass = null;

				try {
					mdpass = MessageDigest.getInstance("MD5"); // getting a
					// 'MD5-Instance'
					encryptMsgpass = mdpass.digest(benutzerPassEingabe
							.getBytes()); // solving the MD5-Hash
				} catch (NoSuchAlgorithmException e) {
					System.out.print("No Such Algorithm Exception!");
				}

				String swappass = ""; // swap-string for the result
				String byteStrpass = ""; // swap-string for current hex-value
				// of byte
				StringBuffer strBufpass = new StringBuffer();

				for (int i = 0; i < encryptMsgpass.length; i++) {

					byteStrpass = Integer.toHexString(encryptMsgpass[i]); // swap-string
					// for
					// current
					// hex-value
					// of
					// byte

					switch (byteStrpass.length()) {
					case 1: // if hex-number length is 1, add a '0' before
						swappass = "0" + Integer.toHexString(encryptMsgpass[i]);
						break;

					case 2: // correct hex-letter
						swappass = Integer.toHexString(encryptMsgpass[i]);
						break;

					case 8: // get the correct substring
						swappass = (Integer.toHexString(encryptMsgpass[i]))
								.substring(6, 8);
						break;
					}
					strBufpass.append(swappass); // appending swap to get
					// complete hash-key
				}
				benutzerPassEingabe = strBufpass.toString(); // String with
				// the MD5-Hash
			}
		} while (!benutzerPassEingabe.equals(passwort)); /*
															 * while
															 * (passExact);
															 */
 
Zuletzt bearbeitet:
Zurück