Zwei Byte-Array's mit XOR verknüpfen
-
Wie können am besten zwei Byte-Array's mit XOR verknüpft werden?
Muss ich dazu eine Schleife laufen lassen?byte[] a = new byte[20]; byte[] b = new byte[20]; byte[] c = new byte[20]; for (int i = 0; i < 20; i++) c[i] = a[i] ^ b[i];
Gibt es eine Klasse für die Aufgabe?
-
Eine Klasse für zwei Zeilen Code - wäre wohl etwas übertrieben -)
-
Das mit der Klasse war schon Quatsch - stimmt schon.
Ich habe aber gehofft das folgendes funktioniert:
byte[] a = new byte[20]; byte[] b = new byte[20]; byte[] c = new byte[20]; [i]//statt: //for (int i = 0; i < 20; i++) // c[i] = a[i] ^ b[i]; [/i] c = a ^ b
Wahrscheinlich nochmal Quatsch...
-
Ja, der Operator ^ funktioniert nur für einfache Datentypen (nicht für Arrays).
Aber kannst ja selber daraus eine Funktion basteln, falls du diese Operation öfter benötigst:byte[] Xor(byte[] a, byte[] b) { int nLen = Math.Min(a.Length, b.Length) // kleinere Länge ermitteln byte[] c = new byte[nLen]; for (int i = 0; i < nLen; i++) c[i] = a[i] ^ b[i]; return c; }
Alternativ bei unterschiedlicher Länge beider Arrays dann mit Nullen auffüllen...
P.S: Für die Klasse BitArray gibt es die Xor-Methode
(ich nehme jedoch an, daß du den Xor-Operator für die Verschlüsselung benutzt, oder?)