This little book is addressed to a young reader, with no more math than that of High School. It introduces the elements of cryptography and cryptanalysis, developing the required math from the very beginning. Starting with the Caesar cipher the author introduces the necessary modular arithmetic to deal even with the general affine ciphers. Along the way, to decipher encrypted messages, the author introduces the first ideas of frequency analysis, mentioning the basic concepts of probability and even explaining the summation notation used in this context. In addition to the mentioned monoalphabetic substitution ciphers, the author introduces polyalphabetic ciphers (Vigenère), and polygraphic systems illustrated by a simplified version of Hill’s system, allowing the author to introduce the concept of matrix and matrix multiplication in a motivated and elementary fashion. All ciphers considered in the first five chapters are symmetric ciphers, i.e., knowing the encryption key is equivalent to knowing the decryption key, and these were all ciphers methods known at the time of the first edition of the book.
As is well known, in the 1970s Diffie and Hellman changed this situation with the introduction of ciphers where one part, the encryption key, is made public while keeping the decryption key secret. These asymmetric ciphers or public-key ciphers, allow many users to be able to send encrypted messages that only the keeper of the secret decryption key can decipher. The popularity of these asymmetric ciphers comes from their use in such mundane applications as bank transactions at the ATM machines, internet shopping or swapping of information. The relatively elementary mathematics needed to understand and implement the more widely used of these ciphers, the RSA protocol, is addressed in the second edition of this book. Todd Feil has added two new chapters, one with the elements of the RSA method of encryption with the corresponding needed math: Fermat’s little theorem, Euclid’s algorithm for the gcd, and the successive squaring method to (efficiently) compute high powers or roots modulo a given integer. This new chapter fits perfectly with the philosophy of the previous chapters, and updates the book keeping its introductory level.
Finally, the last chapter on the requirements needed to choose secure keywords (one-time pads) and pseudo-random generators, nicely caps the book. I must say that each chapter comes with exercises, most of which can be done with just paper and pencil, but if the reader is so interested, their implementation on a computer shouldn’t be more complicated than the math involved, or the reader can take a look at the codehelp program written by Todd Feil and available from his site: http://personal.denison.edu/~feil/codehelp/.
Felipe Zaldivar is Professor of Mathematics at the Universidad Autonoma Metropolitana-I, in Mexico City. His e-mail address is firstname.lastname@example.org