BigInteger entry1 = new BigInteger(someByteArrayFromKey)
BigInteger entry2 = new BigInteger(someByteArrayFromOtherKey);
BigInteger newEntry = entry1.xor(entry2);
That's a neat idea.
You would have to be careful about the possibility of leading[*] zeros in the
data. You could keep track of the size of the input arrays, and ensure that
the output array is copied and shifted (if necessary) to be the same size as
the inputs. Another idea would be to force the inputs to have 0x01 and 0x02 in
position 0, computing the real xor for that position separately, and then stuff
that into position 0 of the result.
Overall, sadly, I think it's probably easier to use a loop.
-- chris