Verschlüsselung will nich so wie ich...

aspergo

Grünschnabel
Hallo,

vorab erstmal ein großes SORRY... Ich habe schon in zig Beiträgen, Google ergebnissen und codeschnipseln gewühlt, habe aber leider nix zu meinem Problem gefunden. Folgendes Problem: Ich habe nach einer möglichkeit gesucht, Logindaden (explizit das Passwort) verschlüsselt in eine Datenbank zu schreiben, dann sollte wenn sich der user anmelden will, das eingegebene Passwort verschlüsselt werden und mit dem gespeicherten verschlüsselten passwort verglichen werden. Ich habe folgende Codeschnipsel aufprobiert:

Code:
public static String getCheckSum(String str, String algo){
	    	try {
		    	MessageDigest md = MessageDigest.getInstance(algo);
		    	md.update(str.getBytes());
		    	return new String (md.digest());
	    	} catch (java.security.NoSuchAlgorithmException nsae) {
	    		System.err.println(nsae.toString()+": Konnte String nicht verschlüsseln!");
	    	}
	    	return null;
}

und:
Code:
public static String createDigest(String userName, String password) throws Exception
        {
	        MessageDigest digest = MessageDigest.getInstance("SHA-1");
	        digest.reset();
	        byte[] saltedBytes = (userName + password).getBytes("UTF-8");
	        byte[] hashedBytes = digest.digest(saltedBytes);
	        String encoded = new sun.misc.BASE64Encoder().encode(hashedBytes);
	        return encoded;
        }

Ich hab soweit auf gerafft wie das alles funktioniert, glaube ich zumindest.
Wenn ich jetzt ein Passwort verschlüsseln lasse und in die DB schreibe(was übrigens gut geht), und mich danach anmelden will und das selbe passwort eintippe, kommt bei mir ein anderer wert raus. Kurz die 2 Passwörter müssen augenscheinlich unterschiedlich verschlüsselt worden sein.

Weiß irgendjemand irgendetwas?
Ich hoffe, ich hab alle infos drin, die Ihr braucht.

Grüße Steffen
 
Hallo Steffen,

Wieso nutzt du nicht 2 mal die gleiche Methode um vom String einen Hash zu erzeugen?

Um den Hash-Wert zu speichern lasse ich die bei mir jeweils durch diese Methode laufen:

Java:
 public static String prettyPrintHash(byte[] inputHash)
 {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < inputHash.length; ++i) {
            sb.append(
                Integer.toHexString(
                    (inputHash[i] & 0xFF) | 0x100
                ).toLowerCase().substring(1,3)
            );
       }
       return sb.toString();
}

Gruss
Johnny
 
Hi Johnny,

klasse, der codechnipsel den du verwendest funktioniert...
Ich bin begeistert.. Danke..

Ja, ich habe es mit diesen beiden methoden probiert... Also ich hab jedesmal die selbe methode benutzt... Aber nun gut... Es läuft... Danke, ich war fast am verzwifeln.

Grüßle
Steffen
 
Zurück