Du bist nicht angemeldet.

1

Sonntag, 29. April 2012, 12:25

Eigene Passwortverschlüsselung

Aus Copyrightgründen kann man die Verschlüsselung von Knuddels ja auch nicht nehmen.
Die MD5 Verschlüsselung war aus dem Inet (ich speicher bei mir die Passwörter gesalted im MD5 Format, deswegen mit in der Klasse drinne). Das Hashing ist an Knuddels angelehnt, kann aber natürlich frei genutzt werden.

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package eu.knuddelz.net.Security;

/**
 *
 * @author KAPS
 */
public class Password {
    	public static String MD5(String md5) {
        	try {
            	java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
            	byte[] array = md.digest(md5.getBytes());
            	StringBuilder sb = new StringBuilder();
            	for (int i = 0; i < array.length; ++i) {
                	sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3));
            	}
            	return sb.toString();
        	} catch (java.security.NoSuchAlgorithmException e) {	}
        	return null;
    	}

    	public static String hash(String md5, String salt) {
        	Integer worth = 0;
        	for(int i=0; i<md5.length();++i) {
            	char c = md5.charAt(i);
            	switch(c%5) {
                	case 0:
                    	worth = worth ^ (3<<(i%16));
                    	break;
                	case 1:
                    	worth += (int)Math.pow(c, c);
                    	break;
                	case 2:
                    	worth = worth | c<<(i%8);
                    	break;
                	case 3: 
                    	worth = worth*c;
                    	break;
                	default:
                    	worth++;
            	}
        	}
        	for(int i=0; i<salt.length();++i) {
            	char c = salt.charAt(i);
            	switch(c%5) {
                	case 0:
                    	worth = worth ^ (3<<(i%16));
                    	break;
                	case 1:
                    	worth += (int)Math.pow(c, c);
                    	break;
                	case 2:
                    	worth = worth | c<<(i%8);
                    	break;
                	case 3: 
                    	worth = worth*c;
                    	break;
                	default:
                    	worth++;
            	}
        	}
        	worth = worth%100000;
        	return worth.toString();
    	}
}



Der Salt hier kann genutzt werden um den dynamischen Passwortkey zu nutzen.

2

Sonntag, 29. April 2012, 12:33

- Deleted -

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Blizzard« (19. Februar 2013, 12:35)


3

Sonntag, 29. April 2012, 12:40

Ja es geht alles einwandfrei. Sicher ist das getestet.
Ist identisch mit der PHP/MYSQL MD5.