**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