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.

A
B
Result

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