Introduction

**Chapter 1:** Making Paper Cryptography Tools**Chapter 2:** Programming in the Interactive Shell**Chapter 3:** Strings and Writing Programs**Chapter 4:** The Reverse Cipher**Chapter 5:** The Caesar Cipher**Chapter 6:** Hacking the Caesar Cipher with Brute Force**Chapter 7:** Encrypting with the Transposition Cipher**Chapter 8:** Decrypting with the Transposition Cipher**Chapter 9:** Programming a Program to Test Your Program**Chapter 10:** Encrypting and Decrypting Files**Chapter 11:** Detecting English Programmatically**Chapter 12:** Hacking the Transposition Cipher**Chapter 13:** A Modular Arithmetic Module for the Affine Cipher**Chapter 14:** Programming the Affine Cipher**Chapter 15:** Hacking the Affine Cipher**Chapter 16:** Programming the Simple Substitution Cipher**Chapter 17:** Hacking the Simple Substitution Cipher**Chapter 18:** Programming the Vigenère Cipher**Chapter 19:** Frequency Analysis**Chapter 20:** Hacking the Vigenère Cipher**Chapter 21:** The One-Time Pad Cipher**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

View the detailed Table of Contents

View the Index