#### Overview of this book

Cryptography is essential for protecting sensitive information, but it is often performed inadequately or incorrectly. Hands-On Cryptography with Python starts by showing you how to encrypt and evaluate your data. The book will then walk you through various data encryption methods,such as obfuscation, hashing, and strong encryption, and will show how you can attack cryptographic systems. You will learn how to create hashes, crack them, and will understand why they are so different from each other. In the concluding chapters, you will use three NIST-recommended systems: the Advanced Encryption Standard (AES), the Secure Hash Algorithm (SHA), and the Rivest-Shamir-Adleman (RSA). By the end of this book, you will be able to deal with common errors in encryption.
Title Page
Packt Upsell
Contributor
Preface
Free Chapter
Obfuscation
Hashing
Strong Encryption
Other Books You May Enjoy
Index

## Challenge 1 – the Caesar cipher

After a Caesar cipher review, we'll have an example of how to solve it and then your challenge. Remember how the Caesar cipher works. You have an alphabet of available characters, you take in the message and a `shift` value, and then you just shift the characters forward that many steps in the alphabet, wrapping around if you go around the end. The script we end up with works for any `shift` value, including normal numbers, such as `3`, or even numbers that are larger than `26`; they just wrap around and can scramble any data you put it.

Here's an example:

1. For ciphertext, you can decipher it by just trying all the `shift` values from `0` to `25`, and one of them will just be readable. This is a simple brute-force attack. Let's take a look at it.

Here, in Python, go to the `caesar4` script, that we had before. It takes in a string and shifts it by any value you specify. If we use that script, we can run it as follows:

1. Then, if we put in `HELLO` and shift it by `3`, it turns into `KHOOR`.
2. If we want to crack it, we can use the solution script as follows:

1. So, if we use that script, we can run it:
1. If we put it in `KHOOR`, it'll shift it by a variety of values, and you can see the one that's readable at `23`, which is `HELLO`. So, the example we discussed before of longer ciphertexts and so on will become readable down at `3`, where you see its `DEMONSTRATION`:
1. Your challenge is to decipher this string: `MYXQBKDEVKDSYXC`.

In the next section, we'll have a challenge on `base64`.