What will we cover?
- Understand the challenge to send a secret message
- Understand the Caesar Cipher
- How to create an implementation of that in Python
- How to break the Caesar Cipher
- Understand the importance of Kerckhoff’s Principle
Step 1: Understand the challenge to send a secret message
In cryptography you have three people involved in almost any scenario. We have Alice that wants to send a message to Bob. But Alice want to send it in a way, such that she ensures that Eve (the evil person) cannot understand it.
But let’s break with tradition and introduce an addition person, Mike. Mike is the messenger. Because we are back in the times of Caesar. Alice represent one of Caesar close generals that needs to send a message to the front lines of the army. Bob is in the front line and waits for a command from Alice. DO ATTACK or NO ATTACK.

Alice will use Mike, the messenger, to send that message to Bob.

Alice is of course afraid of that Eve, the evil enemy, will capture Mike along the way.

Of course, as Alice is smart, she knows that Mike should not understand the message he is delivering, and Eve should not be able to understand it as well. It should only add value to Bob, when Mike gives him the message.

That is the problem that Caesar wanted to solve with his cipher system.
Step 2: Understand the Caesar Cipher
Let’s do this a bit backwards.
You receive the message. BRX DUH DZHVRPH
That is pretty impossible to understand. But if you were told that this is the Caesar Cipher using the shift of 3 characters. Then maybe it makes sense.

As you can see, then green letters are the plaintext characters and the red letters are the encrypted cipher text letters. Hence, A will be a D. That is the letter A is shifted 3 characters down the row.
Reversing this, you see the the encrypted B, will map to the plaintext Y.
If you continue this process you will get.

That is a nice message to get.
Step 3: How to create an implementation of that in Python
Well, that is easy. There are many ways to do it. I will make use of the dictionary to make my life easy.
def generate_key(n):
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key = {}
cnt = 0
for c in letters:
key[ c] = letters[(cnt + n) % len(letters)]
cnt += 1
return key
def get_decryption_key(key):
dkey = {}
for c in key:
dkey[key[ c]] = c
return dkey
def encrypt(key, message):
cipher = ""
for c in message:
if c in key:
cipher += key[ c]
else:
cipher += c
return cipher
# This is setting up your Caesar Cipher key
key = generate_key(3)
# Hmm... I guess this will print the key
print(key)
# This will encrypt the message you have chose with your key
message = "YOU ARE AWESOME"
cipher = encrypt(key, message)
# I guess we should print out your AWESOME message
print(cipher)
Step 4: How to break the Caesar Cipher
If you look at it like this. There is a flaw in the system. Can you see what?
Yes, of course you can. We are in the 2020ies and not back in the times of Caesar.
The key space is too small.
Breaking it basically takes the following code.
# this is us breaking the cipher
print(cipher)
for i in range(26):
dkey = generate_key(i)
message = encrypt(dkey, cipher)
print(message)
You read the code correct. There are only 26 keys. That means, that even back in the days of Caesar this could be done in hand.
This leads us to the most valuable lesson in cryptography and most important principle.
Step 5: Understand the importance of Kerckhoff’s Principle
Let’s just recap what happened here.
Alice sent a message to Bob that Eve captured. Eve did not understand it.

But the reason why Eve did not understand it, was not because she did not have the key.
No, if she knew the algorithm.

Yes, if Eve knew the algorithm of Caesar Cipher, she would not need the secret key to break it.

This leads to the most important lesson in cryptography. Kerckhoff’s Principle.
Eve should not be able to break the ciphers even when she knows the cipher.
Kerckhoff’s Principle
That is seems counterintuitive, right? Yes, but think about it, if you system is secure against any attack even if you reveal your algorithm, then it would give you more confidence that it is secure.
You security should not be based on keeping the algorithm secret. No it should be based on the secret key.
Is that principle followed?
No.
Most government ciphers are kept secret.
Many secret encryption algorithms that leaked were broken.
This also includes the one used for mobile traffic in the old G2 network. A5/1 and the export version A5/2.
Learn Python

Learn Python A BEGINNERS GUIDE TO PYTHON
- 70 pages to get you started on your journey to master Python.
- How to install your setup with Anaconda.
- Written description and introduction to all concepts.
- Jupyter Notebooks prepared for 17 projects.
Python 101: A CRASH COURSE
- How to get started with this 8 hours Python 101: A CRASH COURSE.
- Best practices for learning Python.
- How to download the material to follow along and create projects.
- A chapter for each lesson with a description, code snippets for easy reference, and links to a lesson video.
Expert Data Science Blueprint

Expert Data Science Blueprint
- Master the Data Science Workflow for actionable data insights.
- How to download the material to follow along and create projects.
- A chapter to each lesson with a Description, Learning Objective, and link to the lesson video.
Machine Learning

Machine Learning – The Simple Path to Mastery
- How to get started with Machine Learning.
- How to download the material to follow along and make the projects.
- One chapter for each lesson with a Description, Learning Objectives, and link to the lesson video.