Skip to content

Instantly share code, notes, and snippets.

@RobertTalbert
Last active October 14, 2015 06:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RobertTalbert/7c6238d5f72842b155ff to your computer and use it in GitHub Desktop.
Save RobertTalbert/7c6238d5f72842b155ff to your computer and use it in GitHub Desktop.
Example of bitwise XOR encryption

This is an example of how the bitwise XOR can be used to make a simple encryption system.

Suppose Alice wants to send the message CAT to Bob using the key 11000101.

First: Convert the characters in the message to ASCII:

  • C = 01000011
  • A = 01000001
  • T = 01010100

Second: Alice shares the key with Bob.

Third: Perform bitwise XOR of each bitstring in the message with the key. (Using xor for this since math notation not supported here.)

  • 01000011 xor 11000101 = 10000110
  • 01000001 xor 11000101 = 10000100
  • 01010100 xor 11000101 = 10010001

Fourth: Alice sends the encrypted message 01000011 01000001 01010100 to Bob. If an eavesdropper intercepted the message and tried convert this sequence back to ASCII characters, they'd get three indecipherable control characters. (Check the table.)

Fifth: Bob receives the message and XOR's each bitstring with the key:

  • 10000110 xor 11000101 = 01000011
  • 10000100 xor 11000101 = 01000001
  • 10010001 xor 11000101 = 01010100

Sixth: Bob does a reverse lookup in the ASCII table (or using a computer) to convert from binary back to characters:

  • 01000011 = C
  • 01000001 = A
  • 01010100 = T

And that's the original message.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment