Cracking Codes with Python

Cracking Codes with Python
An Introduction to Building and Breaking Ciphers
by 
Al Sweigart
January 2018, 424 pp.
ISBN-13: 
978-1-59327-822-9

Order now and get early access to the PDF ebook!
(What's Early Access?)
(Which chapters are available now?)

Get 30% off with the coupon code EARLYBIRD

Learn how to program in Python while making and breaking ciphers—algorithms used to create and send secret messages!

After a crash course in Python programming basics, you’ll learn to make, test, and hack programs that encrypt text with classical ciphers like the transposition cipher and Vigenère cipher. You’ll begin with simple programs for the reverse and Caesar ciphers and then work your way up to public key cryptography, the type of encryption used to secure today’s online transactions, including digital signatures, email, and Bitcoin.

Each program includes the full code and a line-by-line explanation of how things work. By the end of the book, you’ll have learned how to code in Python and you’ll have the clever programs to prove it!

You’ll also learn how to:

  • Combine loops, variables, and flow control statements into real working programs
  • Use dictionary files to instantly detect whether decrypted messages are valid English or gibberish
  • Create test programs to make sure that your code encrypts and decrypts correctly
  • Code (and hack!) a working example of the affine cipher, which uses modular arithmetic to encrypt a message
  • Break ciphers with techniques such as brute-force and frequency analysis

There’s no better way to learn to code than to play with real programs. Cracking Codes with Python makes the learning fun!

Author Bio 

Al Sweigart is a professional software developer who teaches programming to kids and adults. He is the author of Automate the Boring Stuff with Python, Invent Your Own Computer Games with Python, and Scratch Programming Playground, also from No Starch Press. His programming tutorials can be found at inventwithpython.com.

Table of contents 

Introduction (AVAILABLE NOW)

Chapter 1: Making Paper Cryptography Tools (AVAILABLE NOW)
Chapter 2: Programming in the Interactive Shell (AVAILABLE NOW)
Chapter 3: Strings and Writing Programs (AVAILABLE NOW)
Chapter 4: The Reverse Cipher (AVAILABLE NOW)
Chapter 5: The Caesar Cipher (AVAILABLE NOW)
Chapter 6: Hacking the Caesar Cipher with Brute Force (AVAILABLE NOW)
Chapter 7: Encrypting with the Transposition Cipher (AVAILABLE NOW)
Chapter 8: Decrypting with the Transposition Cipher (AVAILABLE NOW)
Chapter 9: Programming a Program to Test Your Program (AVAILABLE NOW)
Chapter 10: Encrypting and Decrypting Files (AVAILABLE NOW)
Chapter 11: Detecting English Programmatically (AVAILABLE NOW)
Chapter 12: Hacking the Transposition Cipher (AVAILABLE NOW)
Chapter 13: A Modular Arithmetic Module for the Affine Cipher (AVAILABLE NOW)
Chapter 14: Programming the Affine Cipher (AVAILABLE NOW)
Chapter 15: Hacking the Affine Cipher (AVAILABLE NOW)
Chapter 16: Programming the Simple Substitution Cipher (AVAILABLE NOW)
Chapter 17: Hacking the Simple Substitution Cipher (AVAILABLE NOW)
Chapter 18: Programming the Vigenère Cipher (AVAILABLE NOW)
Chapter 19: Frequency Analysis (AVAILABLE NOW)
Chapter 20: Hacking the Vigenère Cipher (AVAILABLE NOW)
Chapter 21: The One-Time Pad Cipher (AVAILABLE NOW)
Chapter 22: Finding and Generating Prime Numbers
Chapter 23: Generating Keys for the RSA Cipher
Chapter 24: Programming the RSA Cipher

Appendix: Debugging Python Code