# Tag: Perfect secrecy

With a ∈ {0,1} and b ∈ {0,1}, the XOR function {0,1}→{0,1} can be defined by the truth table:

 a b a XOR b 0 0 0 0 1 1 1 0 1 1 1 0

Gimp doesn’t have a layer operation called XOR but there is the “Difference” mode defined by the Gimp User Manual by the equation: $E =|I - M|$

Applying the formula to the Red Green Blue color mode for a pixel we have: $rgb(|r_I-r_M|,|g_I-g_M|,|b_I-b_M|) =|rgb(r_I,g_I,b_I) - rgb(r_M,g_M,b_M)|$

The truth table for the “difference” mode is:

 I M |I – M| rgb(0,0,0) rgb(0,0,0) rgb(0,0,0) rgb(0,0,0) rgb(255,255,255) rgb(255,255,255) rgb(255,255,255) rgb(0,0,0) rgb(255,255,255) rgb(255,255,255) rgb(255,255,255) rgb(0,0,0)

Let’s call black-white representation this binary pallet:

• the white color, i.e. rgb(255,255,255), represent the number 1
• the black color, i.e. rgb(0,0,0), represent the number 0.

Then the truth table for the difference is the same as the XOR one.

## Experimenting with images

Let A_0101.png be this image: And B_0011.png be this image: Notice that each image use the black-white representation of the binary message in the file name.

After we apply the “Difference” layer mode with the two images we have what we can call AXORB_0110.png: Let message.png be this 512×512 image using a 1-bit pallet (Lena with Floyd–Steinberg dithering): And key.png a image of the same size and pallet with random content: We can create a image messageXORkey.png using the Gimp’s different mode: The messageXORkey.png looks as random as the key or any other random key.

Someone in possession of messageXORkey.png and key.png can apply a XOR to retrieve message.png. That’s because:

messageXORkey.png = message.png XOR key.png
messageXORkey.png XOR key.png = message.png XOR key.png XOR key.png
messageXORkey.png XOR key.png = message.png XOR 0
messageXORkey.png XOR key.png = message.png

## Considerations

This was a demonstration of how to use GIMP to encode and decode one-time pads. There are several constraints to use one-time pads in a secure way for practical purposes that you should know before using it in a real situation.