# How can you xor ArrayLists?

C

#### cryptogirl

Can you xor Arraylist together? by using the ^ notation. I know the ^
is for integer representation so if i type cast it to Arraylist would
that be sufficient?

Thank you

R

#### Robert Klemme

cryptogirl said:
Can you xor Arraylist together? by using the ^ notation. I know the ^
is for integer representation so if i type cast it to Arraylist would
that be sufficient?

What would be the expected output of XORing two ArrayLists?

robert

C

#### cryptogirl

What would be the expected output of XORing two ArrayLists?

basically i'm implementing WEP dictionary attack for school. And I
had to store all possible key stream in a hash table and a hash table
on take in type Object so my keystream were inputted into an Array
List. I'm going to have my plaint text and convert it to bytes and
place that into an array list. and then xor both together in order to
retrieve the cipher text.

C

#### Chris Uppal

cryptogirl said:
basically i'm implementing WEP dictionary attack for school.

If you are doing anything compute -intensive with collections of primitive
types (int, byte, etc) then you'd be /far/ better off putting the data into a
normal int[] or byte[] array.

and then xor both together in order to
retrieve the cipher text.

There's no built-in method of computing the elementwise XOR of two ArrayLists,
nor of doing the same with two byte[] arrays. You'll have to code it yourself
with a loop.

-- chris

R

#### Roedy Green

Can you xor Arraylist together? by using the ^ notation. I know the ^
is for integer representation so if i type cast it to Arraylist would
that be sufficient?
see the SortedArrayList class that allows various merging operations.

See http://mindprod.com/products1.html#SORTEDARRAYLIST

this is not APL, Operators work only on primitives.

C

#### christian.bongiorno

Actually,

Why couldn't he do this:

BigInteger entry1 = new BigInteger(someByteArrayFromKey)
BigInteger entry2 = new BigInteger(someByteArrayFromOtherKey);

BigInteger newEntry = entry1.xor(entry2);

Jobs done and he can use keys of any size

Christian
http://christian.bongiorno.org/resume.pdf

C

#### Chris Uppal

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

C

#### christian.bongiorno

Yeah, that's true. In an academic setting like his it won't matter. One
way of doing this would be to override xor() to assure the proper bit
maintenance. There is also BitSet -- but it doesn't take a convenient
byte[] input.

#### Shreyas Kothari

The following code might help you to get XOR of two ArrayList.
What I did was simply xoring all the elements of both the arraylist and storing then in a new arraylist.
For now we assume that arrayList1 and arrayList2 has some values in it.

ArrayList<Integer> newList = new ArrayList<Integer>();
for(i=0;i<arrayList1.size();i++){ //Both the arraylist has same size so no mater which you use for the looping conditon
}
System.out.println("XORing Result: "+newList);

This worked for me and will for others too.

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

### Members online

No members online now.