• Chapter 1: An Overview of the Subject
• Chapter 2: Divisibility and Modular Arithmetic
• Chapter 3: The Evolution of Codemaking Until the Computer Era
• Chapter 4: Matrices and the Hill Cryptosystem
• Chapter 5: The Evolution of Codebreaking Until the Computer Era
• Chapter 6: Representation and Arithmetic of Integers in Different Bases
• Chapter 7: Block Cryptosystems and the Data Encryption Standard (DES)
• Chapter 8: Some Number Theory and Algorithms
• Chapter 9: Public Key Cryptography
• Chapter 10: Finite Fields in General, and GF(256) in Particular
• Chapter 11: The Advanced Encryption Standard Protocol (AES)
• Chapter 12: Elliptic Curve Cryptography
• Appendix A: Sets and Basic Counting Principles
• Appendix B: Randomness and Probability
• Appendix C: Solutions to all Exercises for the Reader
• Appendix D: Answers to Selected Exercises
• References
• Index
• To see a more detailed version of the contents click on this link: Detailed TOC
• To see the book's preface click on this link: Preface

For each of the links below, left click your mouse to view the file in your internet browser window. To download the file in its original format, right click on the link and select a "save" or "save target" option.

The link below to bring you to a text file (created with Notepad) that contains the strings of ciphertexts that appear in Exercises and Exercises for the Reader in the first five chapters. From this file, readers can copy and paste ciphertext passages directly into the platform-independent applets (below) or into any other cryptographic programs.Ciphertexts

A very nice set of platform-independent applets have been created by Eric Flior for some of the core programs of Chapters 1-6. The applets were created with java. They should be helpful for readers by allowing them to do deeper investigations and examples without the distraction of lengthy hand computations. Some of the exercises of Chapter 5 should only be done with the applets from that chapter (or by similar computer programs for readers with stronger computer backgrounds). Below is a brief list of the content programs for each chapter. The chapter names below are links to the corresponding applet pages.

• 1.1: Converting Strings of Digits to/from Vectors
• 1.2: Converting Upper-Case Text to/from Integers
• 1.3: Converting Lower-Case Text to/from Integers
• 1.4: Shift Cipher
• 1.5: Vigenere Cipher
• 1.6: Random Integer Generator
• 2.1: Prime Factorization of Positive Integers
• 2.2: Successive Prime Finder
• 2.3: The Division Algorithm
• 2.4: The Euclidean Algorithm
• 2.5: The Mod Function
• 2.6: The Extended Euclidean Algorithm
• 2.7: Finding Modular Inverses
• 3.1: Affine Cipher Encryption and Decryption
• 3.2: Computing Compositions of Permutations
• 3.3: Computing Inverses of Permutations
• 4.1: Matrix Operations
• 4.2: Matrix Operations for Modular Matrices
• 5.1: Frequency Counts
• 5.3 Ciphertext Partial Substitutions
• 5.4 Modular Frequency Counts
• 5.5 Extracting n-gram Data
• 5.6 Horizontal Shifted Match Counts
• 5.7 Horizontially Shifted Dot Products
• 6.1 Binary / Hexadecimal / Decimal Converter
• 6.2 Base n String Expansions
• 6.3 Base b String Addition
• 6.4 Base b String Subtraction
• 6.5 Base b String Multiplication
• 6.6 Fast Modular Exponentiation

Below are links to download individual programs for an assortment of algorithms and computer exercises from the book. The programs are written in MATLAB, which is a very user-friendly language, and many comments are included. (NOTE: In MATLAB comments appear after "%" symbols since anything appearing in a line after this symbol is ignored by MATLAB.) More information on how these programs operate and how corresponding programs can be written in any computing platform can be learned by looking at the computer implementation material appearing at the end of each chapter. Some programs below give reference to the computer exerise to which it corresponds.

• Lower-Case String with Spaces to Integer Vector text file  M-file
• Upper-Case String with Spaces to Integer Vector text file  M-file
• Integer Vector to Upper-Case String with Spaces text file  M-file
• Program for Frequency Counts (Computer Exercise #1) text file  M-file
• Program for Frequency Counts Ignoring Spaces (Computer Exercise #1) text file  M-file
• Program for Adjacent Letter Counts (Computer Exercise #2) text file  M-file
• Program for Ciphertext Partial Substitutions (Computer Exercise #3) text file  M-file
• Program for Modular Frequency Counts (Computer Exercise #4) text file  M-file
• Program for Analyzing 4-grams and 5-grams (Computer Exercises #5,6) text file  M-file
• Program for Horizontal Shifted Match Counts (Computer Exercise #7) text file  M-file
• Program for Horizontal Shifted Dot Products (Computer Exercise #8) text file  M-file
• Program for Computing Index of Coincidence (Computer Exercise #9) text file  M-file
• Program for Generating Random Permutations (Computer Exercise #10) text file  M-file
• Program for Displaying Permutations text file  M-file
• Program for Producing Random Strings with a Prescribed Frequency Vector text file  M-file
• Permutation Cipher Encryption text file  M-file
• Bit String (or Binary Vector) to Integer Equivalent (Computer Exercise #1) text file  M-file
• Base b Vector to Integer Equivalent (Computer Exercise #5) text file  M-file
• Integer to Binary Vector (Computer Exercise #6) text file  M-file
• Integer to Base b Vector (Computer Exercise #9) text file  M-file
• Program for Base b Addition (Computer Exercise #12) text file  M-file
• Program for Base b Subtraction (Computer Exercise #15) text file  M-file
• Program for Base b Multiplication (Computer Exercise #18) text file  M-file
• Program for Fast Modular Exponentiation (Computer Exercise #19) text file  M-file
• Euler φ Function (Computer Exercise #1) text file  M-file
• Inverse of Euler φ Function (Vector Valued) text file  M-file
• Program for Computing Orders (Computer Exercise #2) text file  M-file
• Fermat's Primality Test Program (Computer Exercise #5) text file  M-file
• Program for Fast Modular Exponentiation with Symbolic Functionality text file  M-file
• Fermat's Primality Test Program with Symbolic Functionality (Computer Exercise #5) text file  M-file
• Enhanced Miller-Rabin Primality Test Program (Computer Exercise #9) text file  M-file
• Program for Pollard's p - 1 Factoring Algorithm (Computer Exercise #11) text file  M-file
• Polynomial Addition in Zp[X] (Computer Exercise #1) text file  M-file
• Polynomial Multiplication in Zp[X] (Computer Exercise #2) text file  M-file
• Division Algorithm in Zp[X] (Computer Exercise #3) text file  M-file
• Program for Checking Irreducibility of a Polynomial in Zp[X] (Computer Exercise #4) text file  M-file
• Polynomial Multiplication in Zp[X](mod m(x)) (Computer Exercise #5) text file  M-file
• Program for Multiplication in GF(16) (Computer Exercise #6) text file  M-file
• Program for Addition in GF(256) (Computer Exercise #7) text file  M-file
• Program for Multiplication in GF(256) (Computer Exercise #7) text file  M-file
• Euclidean Algorithm in Zp[X] (Computer Exercise #8) text file  M-file
• Program for Computing Inverses in GF(16) (Computer Exercise #9) text file  M-file
• Program for Computing Inverses in GF(256) (Computer Exercise #9) text file  M-file
• Program for Nibble Addtion (Computer Exercise #1) text file  M-file
• Program for Nibble Multiplication (Computer Exercise #2) text file  M-file
• Scaled-Down AES Round Key Generation Program (Computer Exercise #3) text file  M-file
• Scaled-Down AES S-Box Program (Computer Exercise #4) text file  M-file
• Scaled-Down AES Add Round Key Operation (Computer Exercise #5) text file  M-file
• Scaled-Down AES Nibble Sub Operation (Computer Exercise #6) text file  M-file
• Scaled-Down AES Shift Row Operation (Computer Exercise #7) text file  M-file
• Scaled-Down AES Mix Column Operation (Computer Exercise #8) text file  M-file
• Scaled Down AES Encryption (Computer Exercise #9) text file  M-file
• Scaled-Down AES Inverse S-Box Program (Computer Exercise #10) text file  M-file
• Scaled-Down AES Inverse Mix Column Operation (Computer Exercise #11) text file  M-file
• Scaled Down AES Decryption (Computer Exercise #9) text file  M-file
• Program for Addition of Points on a Nonsingular Elliptic Curve Over the Real Numbers (Computer Exercise #1) text file  M-file
• Program for Listing All Points on an Elliptic Curve mod p (Computer Exercise #2) text file  M-file
• Faster Program for Listing All Points on an Elliptic Curve mod p, Case p º 3 mod 4 text file  M-file
• Program for Addition of Points on a Nonsingular Elliptic Curve Over Zp (Computer Exercise #4) text file  M-file
• Program for Computing Orders of Points on a Nonsingular Elliptic Curve Over Zp (Computer Exercise #5) text file  M-file
• Fast Program for Integer Multiples of Points on a Nonsingular Elliptic Curve Over Zp (Computer Exercise #6) text file  M-file
• Program for Plaintext Representations on Elliptic Curve Over Zp Using Koblitz's Algorithm (Computer Exercise #8) text file  M-file
• Program for Lenstra's Elliptic Curve Factoring Algorithm (Computer Exercise #10) text file  M-file