XOR

The XOR (Exclusive OR) operator is a logical operation that takes two binary inputs and returns a single binary output.

In cryptography, XOR is often used as a simple method for combining two values into a single value or for separating a single value into two parts.

How it works ?

XOR is a bitwise operator which returns 0 if the bits are the same, and 1 otherwise. In textbooks the XOR operator is denoted by āŠ•, but in most programming languages you will see the char^ used instead.

ABResult

0

0

0

0

1

1

1

1

0

1

0

1

For longer binary inputs, the XOR operation is done bit by bit : 1010 ^ 0111 = 1101 . If the two operand haven't the same size, then the shorter padded with non-significant 0 :

1010 ^ 01 = 1010 ^ 0001 = 1011

Properties

Like other standard mathematical objects, xor has some specific properties :

Commutative  : A āŠ• B = B āŠ• A
Associative  : A āŠ• B āŠ• C = A āŠ• (B āŠ•  C) = (A āŠ• B) āŠ• C
Identity     : A āŠ• 0 = A
Self-Inverse : A āŠ• A = 0

These properties are very interesting cause it permit the following :

D=AāŠ•BAāŠ•D=AāŠ•(AāŠ•B)=AāŠ•AāŠ•B=(AāŠ•A)āŠ•B=0āŠ•B=BD = A \oplus B \\ A \oplus D = A \oplus ( A \oplus B) = A \oplus A \oplus B = (A \oplus A) \oplus B = 0 \oplus B = B

Python

from pwn import *

A = "someData"
B = "OtherData"

xored = xor(A,B)

Resources

Last updated