# Start Crypto with Python

## Start your Cryptography journey here with Python

Want to learn and master modern cryptography?

Did you know that the biggest learnings and most important principles in cryptography come from the old systems? The systems that are easy to understand?

That often surprises people. The things that are the easiest to understand gives the best understanding of why modern cryptography evolved into what it is today.

## Learning principles

The best way to learn is to try it yourself.

You will not learn how to ride a bike by watching others do it. You need to get on the bike and try it yourself.

The same is true for cryptography. To really understand it you will need to program the examples.

Hence, the approach here is to make programs in Python to explain the theory, weaknesses and learn along the way.

I find it fun to program all these examples and understand it that way. That is the most important principle in learning. Keep it playful and fun.

Let’s get started.

## Step 1: Caesar Cipher – the birth of cryptography

What makes Caesar Cipher both brilliant, weak, and gives us the biggest learning about modern cryptography?

You might not have noticed that. Many people have tried to play around with Caesar Cipher, but never thought about that.

In the first tutorial we will cover what it is and how it works.

## Step 2: How Caesar Cipher teaches us the most important principle in modern cryptography

This is important. This is counter intuitive. And what is more crazy, it is not followed in modern security. Why?

Well, the lesson is about to be fully appreciated – but it is unbelievable how long it has taken.

## Step 3: Substitution Cipher – the next natural step

Increase the key size. Make it big.

If you cannot brute force the key space the cipher must be secure. Isn’t that what we learned from previous step?

Correct. But there is more to it.

## Step 4: One Time Pad – the most secure cipher

The ideal cipher. The most secure cipher. So what is the problem?

One Time Pad has it all. It is information theoretical secure? So what is the catch? Why are we not done with cryptography and security in the modern world?

Well, it takes some explanation and understanding.

## Step 5: Asymmetric Encryption

The One Time Pad gives rise to the problem of the key size and key exchange. Well, the key size for One Time Pads is too big.

Another challenge with One Time Pad is that sender and receiver need the same key. That is a symmetric encryption scheme.

What if we could have a asymmetric encryption scheme, where you use different keys to encrypt and decrypt. How would that help you?

## Step 6: How to solve the asymmetric encryption problem

Now you understand the idea behind asymmetric encryption.

How to solve it?

Check out RSA.

## Step 7: Key exchange problem

Another approach could be to have an algorithm to create a symmetric key between two parties that have never met. Of course, in a way that only the two participating parties know the key. No one else.

Why does that matter?

## Step 8: How to solve the key exchange problem

That is amazing. Can you really create a system, which can do that for you?

Yes, and it isn’t that complex.

Check it out how Diffie-Hellman solved that problem.

Now time for some fun stuff.

That would not be secure.

What is used is a salted hash-value of your password. In that way, nobody except you knows the password.

How?

Check out the tutorial on that.

## Next steps…

Well, this will get you started.

I would highly encourage you to do more programming of these examples and fill out some of the gabs.

Luckily I have created an online course covering all that.

It is a best selling course on Udemy.