Du bist nicht angemeldet.

1

Sonntag, 29. April 2012, 12:20

Eigene Verschlüsselung

Angelehnt an den Quellcode von Flav und von Knuddels hier ein Source um sämtliche Pakete zu verschlüsseln und zu übertragen.

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
package eu.knuddelz.net.Security;

import java.io.IOException;
import java.io.InputStream;


public class Protocol {
	public static byte[] decode(InputStream in, byte[] decodeKey) throws IOException {
    	byte first = (byte) in.read();

    	if (first == -1) {
        	throw new IOException("End of stream");
    	}
    	byte second = (byte)in.read();
    	byte third = (byte)in.read();
    	byte fourth = (byte)in.read();
    	int length=(first<<24)|(second<<16)|(third << 8)|fourth;
    	byte[] buffer = new byte[length];
    	
    	
        	for (int i = 0; i < length; i++) {
            	byte byter = (byte) in.read();
            	if(decodeKey!=null) {
                	byter = (byte)(byter^(decodeKey[(i%(decodeKey.length))]));
            	}
            	buffer[i] = byter;
        	}
    	return buffer;
	}

	public static byte[] encode(byte[] message, byte[] encodeKey) {
    	int length = message.length;
    	byte first = (byte)(length>>24);
    	byte second = (byte)(length>>16);
    	byte third = (byte)(length>>8);
    	byte fourth = (byte)(length>>0);
    	byte[] len = { first, second, third, fourth };
    	
    	for(int i = 0; i < message.length; i++) {
        	if(encodeKey!=null) {
            	message[i] = (byte)(message[i] ^ (encodeKey[(i%(encodeKey.length))]));
        	}
    	}
    	

    	byte[] buffer = new byte[len.length + message.length];
    	System.arraycopy(len, 0, buffer, 0, len.length);
    	System.arraycopy(message, 0, buffer, len.length, message.length);
    	return buffer;
	}
}  




Den Quellcode könnt ihr frei nutzen ohne Angabe von CopyRights.

2

Sonntag, 29. April 2012, 20:21

So wie Knuddels die Länge schreibt ist es doch 100x besser. Es werden nur so viele Bytes für die Länge verwendet wie benötigt werden, wozu immer 4 schreiben?
Tschüß.

3

Sonntag, 29. April 2012, 20:34

Aber was macht das schon aus? ;)

Traffic ist doch eh bereits (fast) überall kostenlos.

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


4

Sonntag, 29. April 2012, 20:57

So wie Knuddels die Länge schreibt ist es doch 100x besser. Es werden nur so viele Bytes für die Länge verwendet wie benötigt werden, wozu immer 4 schreiben?
Im Zweifel sind es 1 oder 2 Byte mehr als bei Knuddels. Der Overhead ist hier minimal, die kann man in der Komprimierung z.B. Locker wieder rausholen.

5

Dienstag, 1. Mai 2012, 18:03

Ja natürlich, ich sehe trotzdem kein Vorteil hier gegenüber dem von Knuddels. Wie im anderen Thread auch schon erwähnt und begründet, kann Knuddels dir wegen solche Kleinigkeiten nichts wegen Copyright-Verletzung wenn es dir nur darum geht.

Edit: Wenn ich ich recht erinnere wolltest du doch alles 1-zu-1 so machen wie Knuddels, inkl. der Verschlüsselungen, um zu beweisen, dass dein Anti-Cheat-System besser funktioniert.
Tschüß.

6

Dienstag, 1. Mai 2012, 18:16

Ja natürlich, ich sehe trotzdem kein Vorteil hier gegenüber dem von Knuddels. Wie im anderen Thread auch schon erwähnt und begründet, kann Knuddels dir wegen solche Kleinigkeiten nichts wegen Copyright-Verletzung wenn es dir nur darum geht.

Edit: Wenn ich ich recht erinnere wolltest du doch alles 1-zu-1 so machen wie Knuddels, inkl. der Verschlüsselungen, um zu beweisen, dass dein Anti-Cheat-System besser funktioniert.

Richtig, du kannst dir aber bestimmt vorstellen dass ich für die Knuddels-Variante ebenfalls die Klassen habe wo ich also nur die Klassen beim StartParameter aussuchen muss. ;)
Da ich aber ebenfalls auch was produktives am Ende haben möchte, auch eine eigene Variante.