|
|
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; } } |
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.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?
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.
