Hacking Secret Ciphers with Python A beginners guide to cryptography and computer programming with Python (Al Sweigart) (Z-Library)

Author: Al Sweigart

技术

Hacking Secret Ciphers with Python not only teaches you how to write in secret ciphers with paper and pencil. This book teaches you how to write your own cipher programs and also the hacking programs that can break the encrypted messages from these ciphers. Unfortunately, the programs in this book won’t get the reader in trouble with the law (or rather, fortunately) but it is a guide on the basics of both cryptography and the Python programming language. Instead of presenting a dull laundry list of concepts, this book provides the source code to several fun programming projects for adults and young adults.

📄 File Format: PDF
💾 File Size: 6.6 MB
44
Views
0
Downloads
0.00
Total Donations

📄 Text Preview (First 20 pages)

ℹ️

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

📄 Page 1
Hacking Secret Ciphers with Python By Al Sweigart
📄 Page 2
Copyright © 2013 by Al Sweigart Some Rights Reserved. “Hacking Secret Ciphers with Python” is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License. You are free: To Share — to copy, distribute, display, and perform the work To Remix — to make derivative works Under the following conditions: Attribution — You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). (Visibly include the title and author's name in any excerpts of this work.) Noncommercial — You may not use this work for commercial purposes. Share Alike — If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. This summary is located here: http://creativecommons.org/licenses/by-nc-sa/3.0/us/ Your fair use and other rights are in no way affected by the above. There is a human-readable summary of the Legal Code (the full license), located here: http://creativecommons.org/licenses/by-nc-sa/3.0/us/legalcode Book Version 3 Special thanks to Ari Lacenski. I can’t thank her enough. Without her efforts there’d be typos literally on every page. Thanks to Jason Kibbe. Cover lock photo by “walknboston” http://www.flickr.com/photos/walkn/3859852351/ Romeo & Juliet and other public domain texts from Project Gutenberg. Various image resources from Wikipedia. Wrinkled paper texture by Pink Sherbet Photography http://www.flickr.com/photos/pinksherbet/2978651767/ Computer User icon by Katzenbaer. If you've downloaded this book from a torrent, it’s probably out of date. Go to http://inventwithpython.com/hacking to download the latest version. ISBN 978-1482614374 1st Edition
📄 Page 3
Nedroid Picture Diary by Anthony Clark, http://nedroid.com Movies and TV shows always make hacking look exciting with furious typing and meaningless ones and zeros flying across the screen. They make hacking look like something that you have to be super smart to learn. They make hacking look like magic. It’s not magic. It’s based on computers, and everything computers do have logical principles behind them which can be learned and understood. Even when you don’t understand or when the computer does something frustrating or mysterious, there is always, always, always a reason why. And it’s not hard to learn. This book assumes you know nothing about cryptography or programming, and helps you learn, step by step, how to write programs that can hack encrypted messages. Good luck and have fun!
📄 Page 4
100% of the profits from this book are donated to the Electronic Frontier Foundation, the Creative Commons, and the Tor Project.
📄 Page 5
Dedicated to Aaron Swartz, 1986 – 2013 “Aaron was part of an army of citizens that believes democracy only works when the citizenry are informed, when we know about our rights—and our obligations. An army that believes we must make justice and knowledge available to all—not just the well born or those that have grabbed the reins of power—so that we may govern ourselves more wisely. When I see our army, I see Aaron Swartz and my heart is broken. We have truly lost one of our better angels.” - C.M.
📄 Page 6
ABOUT THIS BOOK There are many books that teach beginners how to write secret messages using ciphers. There are a couple books that teach beginners how to hack ciphers. As far as I can tell, there are no books to teach beginners how to write programs to hack ciphers. This book fills that gap. This book is for complete beginners who do not know anything about encryption, hacking, or cryptography. The ciphers in this book (except for the RSA cipher in the last chapter) are all centuries old, and modern computers now have the computational power to hack their encrypted messages. No modern organization or individuals use these ciphers anymore. As such, there’s no reasonable context in which you could get into legal trouble for the information in this book. This book is for complete beginners who have never programmed before. This book teaches basic programming concepts with the Python programming language. Python is the best language for beginners to learn programming: it is simple and readable yet also a powerful programming language used by professional software developers. The Python software can be downloaded for free from http://python.org and runs on Linux, Windows, OS X, and the Raspberry Pi. There are two definitions of “hacker”. A hacker is a person who studies a system (such as the rules of a cipher or a piece of software) to understand it so well that they are not limited by the original rules of that system and can creatively modify it to work in new ways. “Hacker” is also used to mean criminals who break into computer systems, violate people’s privacy, and cause damage. This book uses “hacker” in the first sense. Hackers are cool. Criminals are just people who think they’re being clever by breaking stuff. Personally, my day job as a software developer pays me way more for less work than writing a virus or doing an Internet scam would. On a side note, don’t use any of the encryption programs in this book for your actual files. They’re fun to play with but they don’t provide true security. And in general, you shouldn’t trust the ciphers that you yourself make. As legendary cryptographer Bruce Schneier put it, “Anyone, from the most clueless amateur to the best cryptographer, can create an algorithm that he himself can’t break. It’s not even hard. What is hard is creating an algorithm that no one else can break, even after years of analysis. And the only way to prove that is to subject the algorithm to years of analysis by the best cryptographers around.” This book is released under a Creative Commons license and is free to copy and distribute (as long as you don’t charge money for it). The book can be downloaded for free from its website at http://inventwithpython.com/hacking. If you ever have questions about how these programs work, feel free to email me at al@inventwithpython.com.
📄 Page 7
TABLE OF CONTENTS About This Book ....................................................................................................................... 6 Table of Contents ..................................................................................................................... 7 Chapter 1 - Making Paper Cryptography Tools ...................................................................... 1 What is Cryptography? ................................................................................................................................................ 2 Codes vs. Ciphers ........................................................................................................................................................ 3 Making a Paper Cipher Wheel ..................................................................................................................................... 4 A Virtual Cipher Wheel ............................................................................................................................................... 7 How to Encrypt with the Cipher Wheel ....................................................................................................................... 8 How to Decrypt with the Cipher Wheel ....................................................................................................................... 9 A Different Cipher Tool: The St. Cyr Slide ............................................................................................................... 10 Practice Exercises, Chapter 1, Set A .......................................................................................................................... 11 Doing Cryptography without Paper Tools ................................................................................................................. 11 Practice Exercises, Chapter 1, Set B .......................................................................................................................... 13 Double-Strength Encryption?..................................................................................................................................... 13 Programming a Computer to do Encryption .............................................................................................................. 14 Chapter 2 - Installing Python ................................................................................................. 16 Downloading and Installing Python ........................................................................................................................... 17 Downloading pyperclip.py ......................................................................................................................................... 18 Starting IDLE ............................................................................................................................................................. 18 The Featured Programs .............................................................................................................................................. 19 Line Numbers and Spaces .......................................................................................................................................... 20 Text Wrapping in This Book ..................................................................................................................................... 20 Tracing the Program Online ....................................................................................................................................... 21 Checking Your Typed Code with the Online Diff Tool ............................................................................................. 21 Copying and Pasting Text .......................................................................................................................................... 21 More Info Links ......................................................................................................................................................... 22 Programming and Cryptography ................................................................................................................................ 22 Chapter 3 - The Interactive Shell .......................................................................................... 26 Some Simple Math Stuff ............................................................................................................................................ 26 Integers and Floating Point Values ............................................................................................................................ 27
📄 Page 8
Expressions ................................................................................................................................................................ 27 Order of Operations ................................................................................................................................................... 28 Evaluating Expressions .............................................................................................................................................. 29 Errors are Okay! ......................................................................................................................................................... 29 Practice Exercises, Chapter 3, Set A .......................................................................................................................... 30 Every Value has a Data Type ..................................................................................................................................... 30 Storing Values in Variables with Assignment Statements ......................................................................................... 30 Overwriting Variables ................................................................................................................................................ 32 Using More Than One Variable ................................................................................................................................. 33 Variable Names .......................................................................................................................................................... 34 Practice Exercises, Chapter 3, Set B .......................................................................................................................... 35 Summary - But When Are We Going to Start Hacking?............................................................................................ 35 Chapter 4 - Strings and Writing Programs ........................................................................... 36 Strings ........................................................................................................................................................................ 36 String Concatenation with the + Operator ................................................................................................................. 38 String Replication with the * Operator ...................................................................................................................... 39 Printing Values with the print() Function ............................................................................................................ 39 Escape Characters ...................................................................................................................................................... 40 Quotes and Double Quotes ........................................................................................................................................ 41 Practice Exercises, Chapter 4, Set A .......................................................................................................................... 42 Indexing ..................................................................................................................................................................... 42 Negative Indexes ........................................................................................................................................................ 44 Slicing ........................................................................................................................................................................ 44 Blank Slice Indexes.................................................................................................................................................... 45 Practice Exercises, Chapter 4, Set B .......................................................................................................................... 46 Writing Programs in IDLE’s File Editor .................................................................................................................... 46 Hello World! .............................................................................................................................................................. 47 Source Code of Hello World ...................................................................................................................................... 47 Saving Your Program ................................................................................................................................................ 48 Running Your Program .............................................................................................................................................. 49 Opening The Programs You’ve Saved ....................................................................................................................... 50 How the “Hello World” Program Works ................................................................................................................... 50 Comments .................................................................................................................................................................. 50 Functions.................................................................................................................................................................... 51
📄 Page 9
The print() function ............................................................................................................................................. 51 The input() function ............................................................................................................................................. 51 Ending the Program ................................................................................................................................................... 52 Practice Exercises, Chapter 4, Set C .......................................................................................................................... 52 Summary .................................................................................................................................................................... 53 Chapter 5 - The Reverse Cipher ............................................................................................ 54 The Reverse Cipher.................................................................................................................................................... 54 Source Code of the Reverse Cipher Program ............................................................................................................. 55 Sample Run of the Reverse Cipher Program .............................................................................................................. 55 Checking Your Source Code with the Online Diff Tool ............................................................................................ 56 How the Program Works............................................................................................................................................ 56 The len() Function ................................................................................................................................................. 57 Introducing the while Loop ..................................................................................................................................... 58 The Boolean Data Type ............................................................................................................................................. 59 Comparison Operators ............................................................................................................................................... 59 Conditions .................................................................................................................................................................. 62 Blocks ........................................................................................................................................................................ 62 The while Loop Statement ...................................................................................................................................... 63 “Growing” a String .................................................................................................................................................... 64 Tracing Through the Program, Step by Step .............................................................................................................. 67 Using input() In Our Programs ............................................................................................................................. 68 Practice Exercises, Chapter 5, Section A ................................................................................................................... 69 Summary .................................................................................................................................................................... 69 Chapter 6 - The Caesar Cipher .............................................................................................. 70 Implementing a Program ............................................................................................................................................ 70 Source Code of the Caesar Cipher Program ............................................................................................................... 71 Sample Run of the Caesar Cipher Program ................................................................................................................ 72 Checking Your Source Code with the Online Diff Tool ............................................................................................ 73 Practice Exercises, Chapter 6, Set A .......................................................................................................................... 73 How the Program Works............................................................................................................................................ 73 Importing Modules with the import Statement ....................................................................................................... 73 Constants.................................................................................................................................................................... 74 The upper() and lower() String Methods ........................................................................................................ 75
📄 Page 10
The for Loop Statement ........................................................................................................................................... 76 A while Loop Equivalent of a for Loop ................................................................................................................ 77 Practice Exercises, Chapter 6, Set B .......................................................................................................................... 78 The if Statement ...................................................................................................................................................... 78 The else Statement .................................................................................................................................................. 79 The elif Statement .................................................................................................................................................. 79 The in and not in Operators ................................................................................................................................. 80 The find() String Method ...................................................................................................................................... 81 Practice Exercises, Chapter 6, Set C .......................................................................................................................... 82 Back to the Code ........................................................................................................................................................ 82 Displaying and Copying the Encrypted/Decrypted String ......................................................................................... 85 Encrypt Non-Letter Characters .................................................................................................................................. 86 Summary .................................................................................................................................................................... 87 Chapter 7 - Hacking the Caesar Cipher with the Brute-Force Technique .......................... 88 Hacking Ciphers ........................................................................................................................................................ 88 The Brute-Force Attack ............................................................................................................................................. 89 Source Code of the Caesar Cipher Hacker Program .................................................................................................. 89 Sample Run of the Caesar Cipher Hacker Program ................................................................................................... 90 How the Program Works............................................................................................................................................ 91 The range() Function ............................................................................................................................................ 91 Back to the Code ........................................................................................................................................................ 93 String Formatting ....................................................................................................................................................... 94 Practice Exercises, Chapter 7, Set A .......................................................................................................................... 95 Summary .................................................................................................................................................................... 95 Chapter 8 - Encrypting with the Transposition Cipher ........................................................ 96 Encrypting with the Transposition Cipher ................................................................................................................. 96 Practice Exercises, Chapter 8, Set A .......................................................................................................................... 98 A Transposition Cipher Encryption Program ............................................................................................................. 98 Source Code of the Transposition Cipher Encryption Program ................................................................................. 98 Sample Run of the Transposition Cipher Encryption Program .................................................................................. 99 How the Program Works.......................................................................................................................................... 100 Creating Your Own Functions with def Statements ............................................................................................... 100 The Program’s main() Function ........................................................................................................................... 101
📄 Page 11
Parameters ................................................................................................................................................................ 102 Variables in the Global and Local Scope ................................................................................................................. 104 The global Statement ........................................................................................................................................... 104 Practice Exercises, Chapter 8, Set B ........................................................................................................................ 106 The List Data Type .................................................................................................................................................. 106 Using the list() Function to Convert Range Objects to Lists ............................................................................. 109 Reassigning the Items in Lists.................................................................................................................................. 110 Reassigning Characters in Strings ............................................................................................................................ 110 Lists of Lists ............................................................................................................................................................ 110 Practice Exercises, Chapter 8, Set C ........................................................................................................................ 111 Using len() and the in Operator with Lists ......................................................................................................... 111 List Concatenation and Replication with the + and * Operators.............................................................................. 112 Practice Exercises, Chapter 8, Set D ........................................................................................................................ 113 The Transposition Encryption Algorithm ................................................................................................................ 113 Augmented Assignment Operators .......................................................................................................................... 115 Back to the Code ...................................................................................................................................................... 116 The join() String Method .................................................................................................................................... 118 Return Values and return Statements .................................................................................................................. 119 Practice Exercises, Chapter 8, Set E ........................................................................................................................ 120 Back to the Code ...................................................................................................................................................... 120 The Special __name__ Variable ............................................................................................................................ 120 Key Size and Message Length ................................................................................................................................. 121 Summary .................................................................................................................................................................. 122 Chapter 9 - Decrypting with the Transposition Cipher ...................................................... 123 Decrypting with the Transposition Cipher on Paper ................................................................................................ 124 Practice Exercises, Chapter 9, Set A ........................................................................................................................ 125 A Transposition Cipher Decryption Program........................................................................................................... 126 Source Code of the Transposition Cipher Decryption Program ............................................................................... 126 How the Program Works.......................................................................................................................................... 127 The math.ceil(), math.floor() and round() Functions ......................................................................... 128 The and and or Boolean Operators ........................................................................................................................ 132 Practice Exercises, Chapter 9, Set B ........................................................................................................................ 133 Truth Tables ............................................................................................................................................................. 133
📄 Page 12
The and and or Operators are Shortcuts ................................................................................................................ 134 Order of Operations for Boolean Operators ............................................................................................................. 135 Back to the Code ...................................................................................................................................................... 135 Practice Exercises, Chapter 9, Set C ........................................................................................................................ 137 Summary .................................................................................................................................................................. 137 Chapter 10 - Programming a Program to Test Our Program ............................................ 138 Source Code of the Transposition Cipher Tester Program ....................................................................................... 139 Sample Run of the Transposition Cipher Tester Program ........................................................................................ 140 How the Program Works.......................................................................................................................................... 141 Pseudorandom Numbers and the random.seed() Function ............................................................................... 141 The random.randint() Function ..................................................................................................................... 143 References ................................................................................................................................................................ 143 The copy.deepcopy() Functions ...................................................................................................................... 147 Practice Exercises, Chapter 10, Set A ...................................................................................................................... 148 The random.shuffle() Function ..................................................................................................................... 148 Randomly Scrambling a String ................................................................................................................................ 149 Back to the Code ...................................................................................................................................................... 149 The sys.exit() Function ................................................................................................................................... 150 Testing Our Test Program ........................................................................................................................................ 151 Summary .................................................................................................................................................................. 152 Chapter 11 - Encrypting and Decrypting Files ................................................................... 153 Plain Text Files ........................................................................................................................................................ 154 Source Code of the Transposition File Cipher Program ........................................................................................... 154 Sample Run of the Transposition File Cipher Program ........................................................................................... 157 Reading From Files .................................................................................................................................................. 157 Writing To Files ....................................................................................................................................................... 158 How the Program Works.......................................................................................................................................... 159 The os.path.exists() Function ..................................................................................................................... 160 The startswith() and endswith() String Methods ..................................................................................... 161 The title() String Method ................................................................................................................................. 162 The time Module and time.time() Function .................................................................................................. 163 Back to the Code ...................................................................................................................................................... 164 Practice Exercises, Chapter 11, Set A ...................................................................................................................... 165
📄 Page 13
Summary .................................................................................................................................................................. 165 Chapter 12 - Detecting English Programmatically ............................................................ 166 How Can a Computer Understand English? ............................................................................................................. 167 Practice Exercises, Chapter 12, Section A ............................................................................................................... 169 The Detect English Module ..................................................................................................................................... 169 Source Code for the Detect English Module ............................................................................................................ 169 How the Program Works.......................................................................................................................................... 170 Dictionaries and the Dictionary Data Type .............................................................................................................. 171 Adding or Changing Items in a Dictionary .............................................................................................................. 172 Practice Exercises, Chapter 12, Set B ...................................................................................................................... 173 Using the len() Function with Dictionaries .......................................................................................................... 173 Using the in Operator with Dictionaries ................................................................................................................. 173 Using for Loops with Dictionaries ........................................................................................................................ 174 Practice Exercises, Chapter 12, Set C ...................................................................................................................... 174 The Difference Between Dictionaries and Lists ....................................................................................................... 174 Finding Items is Faster with Dictionaries Than Lists ............................................................................................... 175 The split() Method ............................................................................................................................................ 175 The None Value ...................................................................................................................................................... 176 Back to the Code ...................................................................................................................................................... 177 “Divide by Zero” Errors ........................................................................................................................................... 179 The float(), int(), and str() Functions and Integer Division ..................................................................... 179 Practice Exercises, Chapter 12, Set D ...................................................................................................................... 180 Back to the Code ...................................................................................................................................................... 180 The append() List Method ..................................................................................................................................... 182 Default Arguments ................................................................................................................................................... 183 Calculating Percentage ............................................................................................................................................. 184 Practice Exercises, Chapter 12, Set E ...................................................................................................................... 185 Summary .................................................................................................................................................................. 186 Chapter 13 - Hacking the Transposition Cipher ................................................................ 187 Source Code of the Transposition Cipher Hacker Program ..................................................................................... 187 Sample Run of the Transposition Breaker Program ................................................................................................. 189 How the Program Works.......................................................................................................................................... 190 Multi-line Strings with Triple Quotes ...................................................................................................................... 190
📄 Page 14
Back to the Code ...................................................................................................................................................... 191 The strip() String Method ................................................................................................................................. 193 Practice Exercises, Chapter 13, Set A ...................................................................................................................... 195 Summary .................................................................................................................................................................. 195 Chapter 14 - Modular Arithmetic with the Multiplicative and Affine Ciphers ................. 196 Oh No Math! ............................................................................................................................................................ 197 Math Oh Yeah! ........................................................................................................................................................ 197 Modular Arithmetic (aka Clock Arithmetic) ............................................................................................................ 197 The % Mod Operator ............................................................................................................................................... 199 Practice Exercises, Chapter 14, Set A ...................................................................................................................... 199 GCD: Greatest Common Divisor (aka Greatest Common Factor) ........................................................................... 199 Visualize Factors and GCD with Cuisenaire Rods ................................................................................................... 200 Practice Exercises, Chapter 14, Set B ...................................................................................................................... 202 Multiple Assignment ................................................................................................................................................ 202 Swapping Values with the Multiple Assignment Trick ............................................................................................ 203 Euclid’s Algorithm for Finding the GCD of Two Numbers..................................................................................... 203 “Relatively Prime” ................................................................................................................................................... 205 Practice Exercises, Chapter 14, Set C ...................................................................................................................... 205 The Multiplicative Cipher ........................................................................................................................................ 205 Practice Exercises, Chapter 14, Set D ...................................................................................................................... 207 Multiplicative Cipher + Caesar Cipher = The Affine Cipher ................................................................................... 207 The First Affine Key Problem.................................................................................................................................. 207 Decrypting with the Affine Cipher........................................................................................................................... 208 Finding Modular Inverses ........................................................................................................................................ 209 The // Integer Division Operator ........................................................................................................................... 210 Source Code of the cryptomath Module ............................................................................................................. 210 Practice Exercises, Chapter 14, Set E ...................................................................................................................... 211 Summary .................................................................................................................................................................. 211 Chapter 15 - The Affine Cipher ........................................................................................... 213 Source Code of the Affine Cipher Program ............................................................................................................. 214 Sample Run of the Affine Cipher Program .............................................................................................................. 216 Practice Exercises, Chapter 15, Set A ...................................................................................................................... 216 How the Program Works.......................................................................................................................................... 216 Splitting One Key into Two Keys ............................................................................................................................ 218
📄 Page 15
The Tuple Data Type ............................................................................................................................................... 218 Input Validation on the Keys ................................................................................................................................... 219 The Affine Cipher Encryption Function .................................................................................................................. 220 The Affine Cipher Decryption Function .................................................................................................................. 221 Generating Random Keys ........................................................................................................................................ 222 The Second Affine Key Problem: How Many Keys Can the Affine Cipher Have? ................................................. 223 Summary .................................................................................................................................................................. 225 Chapter 16 - Hacking the Affine Cipher ............................................................................. 226 Source Code of the Affine Cipher Hacker Program ................................................................................................. 226 Sample Run of the Affine Cipher Hacker Program .................................................................................................. 228 How the Program Works.......................................................................................................................................... 228 The Affine Cipher Hacking Function ....................................................................................................................... 230 The ** Exponent Operator ...................................................................................................................................... 230 The continue Statement ...................................................................................................................................... 231 Practice Exercises, Chapter 16, Set A ...................................................................................................................... 234 Summary .................................................................................................................................................................. 234 Chapter 17 - The Simple Substitution Cipher .................................................................... 235 The Simple Substitution Cipher with Paper and Pencil ........................................................................................... 236 Practice Exercises, Chapter 17, Set A ...................................................................................................................... 236 Source Code of the Simple Substitution Cipher ....................................................................................................... 237 Sample Run of the Simple Substitution Cipher Program ......................................................................................... 239 How the Program Works.......................................................................................................................................... 239 The Program’s main() Function ........................................................................................................................... 240 The sort() List Method ....................................................................................................................................... 241 Wrapper Functions ................................................................................................................................................... 242 The Program’s translateMessage() Function ............................................................................................... 243 The isupper() and islower() String Methods .............................................................................................. 245 Practice Exercises, Chapter 17, Set B ...................................................................................................................... 247 Generating a Random Key ....................................................................................................................................... 247 Encrypting Spaces and Punctuation ......................................................................................................................... 248 Practice Exercises, Chapter 17, Set C ...................................................................................................................... 249 Summary .................................................................................................................................................................. 249 Chapter 18 - Hacking the Simple Substitution Cipher ...................................................... 250
📄 Page 16
Computing Word Patterns ........................................................................................................................................ 251 Getting a List of Candidates for a Cipherword ........................................................................................................ 252 Practice Exercises, Chapter 18, Set A ...................................................................................................................... 253 Source Code of the Word Pattern Module ............................................................................................................... 253 Sample Run of the Word Pattern Module ................................................................................................................ 255 How the Program Works.......................................................................................................................................... 256 The pprint.pprint() and pprint.pformat() Functions ........................................................................ 256 Building Strings in Python with Lists ...................................................................................................................... 257 Calculating the Word Pattern ................................................................................................................................... 258 The Word Pattern Program’s main() Function ..................................................................................................... 259 Hacking the Simple Substitution Cipher .................................................................................................................. 262 Source Code of the Simple Substitution Hacking Program...................................................................................... 262 Hacking the Simple Substitution Cipher (in Theory) ............................................................................................... 266 Explore the Hacking Functions with the Interactive Shell ....................................................................................... 266 How the Program Works.......................................................................................................................................... 271 Import All the Things ............................................................................................................................................... 272 A Brief Intro to Regular Expressions and the sub() Regex Method ......................................................................... 272 The Hacking Program’s main() Function ............................................................................................................. 273 Partially Hacking the Cipher .................................................................................................................................... 274 Blank Cipherletter Mappings ................................................................................................................................... 275 Adding Letters to a Cipherletter Mapping ............................................................................................................... 276 Intersecting Two Letter Mappings ........................................................................................................................... 277 Removing Solved Letters from the Letter Mapping ................................................................................................. 278 Hacking the Simple Substitution Cipher .................................................................................................................. 281 Creating a Key from a Letter Mapping .................................................................................................................... 283 Couldn’t We Just Encrypt the Spaces Too? ............................................................................................................. 285 Summary .................................................................................................................................................................. 286 Chapter 19 - The Vigenère Cipher ...................................................................................... 287 Le Chiffre Indéchiffrable ......................................................................................................................................... 288 Multiple “Keys” in the Vigenère Key ...................................................................................................................... 288 Source Code of Vigenère Cipher Program ............................................................................................................... 291 Sample Run of the Vigenère Cipher Program .......................................................................................................... 294 How the Program Works.......................................................................................................................................... 294 Summary .................................................................................................................................................................. 298
📄 Page 17
Chapter 20 - Frequency Analysis ........................................................................................ 299 The Code for Matching Letter Frequencies ............................................................................................................. 304 How the Program Works.......................................................................................................................................... 306 The Most Common Letters, “ETAOIN” .................................................................................................................. 307 The Program’s getLettersCount() Function ................................................................................................. 307 The Program’s getItemAtIndexZero() Function .......................................................................................... 308 The Program’s getFrequencyOrder() Function ............................................................................................ 308 The sort() Method’s key and reverse Keyword Arguments ......................................................................... 310 Passing Functions as Values .................................................................................................................................... 311 Converting Dictionaries to Lists with the keys(), values(), items() Dictionary Methods ......................................... 313 Sorting the Items from a Dictionary ......................................................................................................................... 315 The Program’s englishFreqMatchScore() Function ................................................................................... 316 Summary .................................................................................................................................................................. 317 Chapter 21 - Hacking the Vigenère Cipher ........................................................................ 318 The Dictionary Attack .............................................................................................................................................. 319 Source Code for a Vigenère Dictionary Attack Program ......................................................................................... 319 Sample Run of the Vigenère Dictionary Hacker Program ....................................................................................... 320 The readlines() File Object Method ................................................................................................................ 321 The Babbage Attack & Kasiski Examination ........................................................................................................... 321 Kasiski Examination, Step 1 – Find Repeat Sequences’ Spacings ........................................................................... 321 Kasiski Examination, Step 2 – Get Factors of Spacings .......................................................................................... 322 Get Every Nth Letters from a String ........................................................................................................................ 323 Frequency Analysis .................................................................................................................................................. 323 Brute-Force through the Possible Keys .................................................................................................................... 325 Source Code for the Vigenère Hacking Program ..................................................................................................... 326 Sample Run of the Vigenère Hacking Program ....................................................................................................... 332 How the Program Works.......................................................................................................................................... 334 Finding Repeated Sequences ................................................................................................................................... 335 Calculating Factors .................................................................................................................................................. 337 Removing Duplicates with the set() Function .......................................................................................................... 338 The Kasiski Examination Algorithm........................................................................................................................ 341 The extend() List Method ................................................................................................................................... 342 The end Keyword Argument for print() ........................................................................................................... 347
📄 Page 18
The itertools.product() Function .............................................................................................................. 348 The break Statement ............................................................................................................................................. 352 Practice Exercises, Chapter 21, Set A ...................................................................................................................... 354 Modifying the Constants of the Hacking Program ................................................................................................... 354 Summary .................................................................................................................................................................. 355 Chapter 22 - The One-Time Pad Cipher .............................................................................. 356 The Unbreakable One-Time Pad Cipher .................................................................................................................. 357 Why the One-Time Pad is Unbreakable ................................................................................................................... 357 Beware Pseudorandomness ...................................................................................................................................... 358 Beware the Two-Time Pad ...................................................................................................................................... 358 The Two-Time Pad is the Vigenère Cipher .............................................................................................................. 359 Practice Exercises, Chapter 22, Set A ...................................................................................................................... 360 Summary .................................................................................................................................................................. 360 Chapter 23 - Finding Prime Numbers ................................................................................. 361 Prime Numbers ........................................................................................................................................................ 362 Composite Numbers................................................................................................................................................. 363 Source Code for The Prime Sieve Module ............................................................................................................... 363 How the Program Works.......................................................................................................................................... 364 How to Calculate if a Number is Prime ................................................................................................................... 365 The Sieve of Eratosthenes ........................................................................................................................................ 366 The primeSieve() Function............................................................................................................................... 368 Detecting Prime Numbers ........................................................................................................................................ 369 Source Code for the Rabin-Miller Module ............................................................................................................... 370 Sample Run of the Rabin Miller Module ................................................................................................................. 372 How the Program Works.......................................................................................................................................... 372 The Rabin-Miller Primality Algorithm .................................................................................................................... 372 The New and Improved isPrime() Function ...................................................................................................... 373 Summary .................................................................................................................................................................. 375 Chapter 24 - Public Key Cryptography and the RSA Cipher .............................................. 378 Public Key Cryptography......................................................................................................................................... 379 The Dangers of “Textbook” RSA ............................................................................................................................ 381 A Note About Authentication .................................................................................................................................. 381 The Man-In-The-Middle Attack .............................................................................................................................. 382
📄 Page 19
Generating Public and Private Keys......................................................................................................................... 383 Source Code for the RSA Key Generation Program ................................................................................................ 383 Sample Run of the RSA Key Generation Program .................................................................................................. 385 How the Key Generation Program Works ............................................................................................................... 386 The Program’s generateKey() Function ........................................................................................................... 387 RSA Key File Format .............................................................................................................................................. 390 Hybrid Cryptosystems ............................................................................................................................................. 391 Source Code for the RSA Cipher Program .............................................................................................................. 391 Sample Run of the RSA Cipher Program ................................................................................................................. 395 Practice Exercises, Chapter 24, Set A ...................................................................................................................... 397 Digital Signatures .................................................................................................................................................... 397 How the RSA Cipher Program Works ..................................................................................................................... 398 ASCII: Using Numbers to Represent Characters ..................................................................................................... 400 The chr() and ord() Functions .......................................................................................................................... 400 Practice Exercises, Chapter 24, Set B ...................................................................................................................... 401 Blocks ...................................................................................................................................................................... 401 Converting Strings to Blocks with getBlocksFromText() ............................................................................. 404 The encode() String Method and the Bytes Data Type ....................................................................................... 405 The bytes() Function and decode() Bytes Method ........................................................................................ 405 Practice Exercises, Chapter 24, Set C ...................................................................................................................... 406 Back to the Code ...................................................................................................................................................... 406 The min() and max() Functions .......................................................................................................................... 407 The insert() List Method ................................................................................................................................... 410 The Mathematics of RSA Encrypting and Decrypting ............................................................................................. 411 The pow() Function ............................................................................................................................................... 411 Reading in the Public & Private Keys from their Key Files ..................................................................................... 413 The Full RSA Encryption Process ........................................................................................................................... 413 The Full RSA Decryption Process ........................................................................................................................... 416 Practice Exercises, Chapter 24, Set D ...................................................................................................................... 418 Why Can’t We Hack the RSA Cipher ...................................................................................................................... 418 Summary .................................................................................................................................................................. 420 About the Author .................................................................................................................. 422
📄 Page 20
(This page has no text content)
The above is a preview of the first 20 pages. Register to read the complete e-book.

💝 Support Author

0.00
Total Amount (¥)
0
Donation Count

Login to support the author

Login Now
Back to List