How can you xor ArrayLists?

Discussion in 'Java' started by cryptogirl, Feb 24, 2006.

  1. cryptogirl

    cryptogirl Guest

    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
    cryptogirl, Feb 24, 2006
    1. Advertisements

  2. What would be the expected output of XORing two ArrayLists?

    Robert Klemme, Feb 24, 2006
    1. Advertisements

  3. cryptogirl

    cryptogirl Guest

    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.
    cryptogirl, Feb 24, 2006
  4. cryptogirl

    Chris Uppal Guest

    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.

    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
    Chris Uppal, Feb 24, 2006
  5. cryptogirl

    Roedy Green Guest

    see the SortedArrayList class that allows various merging operations.


    this is not APL, Operators work only on primitives.
    Roedy Green, Feb 24, 2006
  6. 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.bongiorno, Feb 24, 2006
  7. cryptogirl

    Chris Uppal Guest

    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
    Chris Uppal, Feb 25, 2006
  8. 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.
    christian.bongiorno, Feb 26, 2006
  9. cryptogirl

    Shreyas Kothari

    Oct 28, 2014
    Likes Received:
    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
    newList.add(arrayList1.get(i) ^ arrayList2.get(i));
    System.out.println("XORing Result: "+newList);

    This worked for me and will for others too.
    Shreyas Kothari, Oct 28, 2014
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

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