Programming Section:
(If it’s here, I have it. If it’s reviewed, I have, at a minimum, read all of the crypto-relevant parts.)


Applied Cryptography: Protocols, Algorithms, and Source Code in C
Schneier, Bruce. 1995, 2nd edition. 784 pages.
Categories: Programming, Reference
Applied Cryptography is the must have tome for all would-be cryptographers. It's an encyclopedia (758 pages) of algorithms, techniques, politics, and source code. One could write code simply from the explanations of the algorithms, however it is fairly non-techy and good humored. While intended to be a reference book, it is enjoyable when read straight through. It is, of course, showing its age.


Art of Computer Programming Volume 2, The: Seminumerical Algorithms
Knuth, Donald E. 1998, 3rd edition. 762 pages.
Categories: Mathematics, Programming, Reference
Having been called the "father of algorithms", Knuth is well respected for formalizing much of computer science. The Art of Programming Volume 2 explores topics relevant to cryptography, such as randomness (193 pages!), modular arithmetic, the Chinese remainder theorem, the extended Euclidian algorithm, factoring, prime numbers, and much more.
The book is becoming dated, in that there have been many advances in the mathematical/algorithmic topic areas covered in this book, and most books don’t write their source code examples in assembly language these days. However, it is still a phenomenal work.


Code Book, The: All About Unbreakable Codes and How to Use Them
Marotta, Michael. 1987, 3rd edition (Currently out of print). 106 pages.
Categories: Programming
Published by Loompanics Unlimited, the same publisher that brought you titles such as "Job Opportunities in the Black Market", "How to Launder Money", "Surviving in Prison", and "Indoor Marijuana Horticulture". This book, for its time and audience, was actually surprisingly well researched. The paranoid author (who admits to inserting logic bombs in his software, and getting fired for reading co-worker files) would have you believe that you can create unbreakable codes on your home TSR80 or Commodore 64. BASIC source code examples are included, but they mostly demonstrate means of generating (not so) random numbers for creating (statistically biased) one time pads.


Cryptanalysis for Microcomputers
Foster, Caxton C. 1982 (Currently out of print). 333 pages.
Categories: Cryptanalysis, Programming
It's a shame this book is out of print, because it's packed with cryptanalysis source code. Code examples help to break Playfair, polyalphabetic codes, and many other traditional ciphers. Unfortunately (or fortunately depending on who you are), all the examples are in basic. A great starting point for those just beginning to write software to perform cryptanalysis.


Giant Black Book of Computer Viruses, The
Ludwig, Mark. 1998, 2nd edition. 462 pages.
Categories: Information Warfare, Programming
I decided to include this book because it covers encrypting viruses. Remove the virus, and you can't read anything it has encrypted! The virus KOH uses a 128 bit IDEA key. On the whole, this is an amazing book. There are assembly language source code examples throughout, and even a disk in the back if you want to infect your PC.


Handbook of Theoretical Computer Science Volume A: Algorithms and Complexity
Leeuwen, J. van (Editor). 1994. 996 pages.
Categories: Mathematics, Programming, Reference
Extensive coverage of complexity theory, number theory, and a good deal of crypto to boot. In my opinion, volumes A and B are far more useful, and up to date than the three book series "The Art of Computer Programming" by Knuth, at least a far as crypto is concerned. Ronald Rivest wrote the crypto section.


Introduction to Algorithms
Cormen, Thomas H. / Leiserson, Charles E. / Rivest, Ronald L. 1990, 1st edition. 1028 pages.
Note: I have not read the newer 2nd edition (release date September 2001).
Categories: Programming, Reference
In this book, Rivest (the "R" in RSA) supplies the section on number-theoretic algorithms, including the RSA cryptosystem. Also discussed is the Chinese remainder theorem, primality testing, integer factorization, and a good sized section on complexity theory. This is a strong reference book. I have not yet seen the second edition (published September 2001), and I'm eager to see what they've included from the last ten years.


Java Cryptography
Knudsen, Jonathan. 1998. 362 pages.
Categories: Programming
Out of date, suffers from bugs, and not enough code samples.


Mastering Algorithms with Perl
Orwant, Jon / Hietaniemi, Jarkko / Macdonald, John. 1999. 684 pages.
Categories: Programming
This book deserves a good rating, but since I'm rating it on its crypto content, it only gets an ok rating. A great book to have if you're a serious perl programmer. 27 pages discuss number theory, and 40 pages discuss cryptography. In the cryptography section are perl code samples (available online) demonstrating areas such as SSLeay.pm, winnowing/chaffing, and steganography. (Hopefully, you're not doing any serious cryptography projects in perl.)


Mathematical Cryptology for Computer Scientists and Mathematicians
Patterson, Wayne. 1987. 312 pages.
Categories: Mathematics, Programming
This was undoubtedly a top notch math-oriented introduction to cryptography back in 1987, but today it is of course dated. Has the predilections typical of 80s crypto books -- namely an emphasis on DES and in breaking Knapsacks. The author offers enough original ways of looking at timeless topics so that the book often tends to nicely round out one's collection. All of the code examples are in pascal. This is a book that should be updated and republished.


Number Theory: A Programmer's Guide
Herkommer, Mark. 1999. 425 pages.
Categories: Mathematics, Programming, Top Picks
Perhaps the best book from which a programmer could learn number theory on his own time. 425 pages of theory with code examples of nearly everything discussed (included on CD in back). Most of the number theory is directly applicable to modern cryptography. This is a "best of it's kind" book. It looks like it may have gone out of print already, so track down a used copy soon.


PGP Source Code and Internals
Zimmermann, Phillip R. 1995 (Currently out of print). 907 pages.
Categories: Applications and Protocols, Programming
"Source Code and Internals" is a way of saying "we've printed out all the source code so it can sit on your shelf". Actually, the original intent of this book was to defeat export laws by putting PGP v2.6.2 in printed form, and then including instructions on how to scan it into a computer. Of course, it only takes one person to do this, which is why this 907 paged book probably went out of print so quickly. However, it is fun seeing an index in the back for variable and function names.

The books I haven't finished reading yet...


Building Open Source Network Security Tools: Components and Techniques
Schiffman, Mike D. 2003. 424 pages.
Categories: Programming
Haven't finished reading this book yet.



Building Secure Software: How to Avoid Security Problems the Right Way
Viega, John / McGraw, Gary. 2002. 493 pages.
Categories: Programming
Haven't finished reading this book yet.



Hacking Exposed J2EE & Java: Developing Secure Web Applications with Java Technology
Taylor, Art / Buege, Brian / Layman, Randy. 2002. 426 pages.
Categories: Programming
Haven't finished reading this book yet.



Inside Java 2 Platform Security: Architecture, API Design, and Implementation
Gong, Li. 1999. 262 pages.
Categories: Programming
Haven't finished reading this book yet.



Java Security Solutions
Helton, Rich / Helton, Johennie. 2002. 600 pages.
Categories: Programming
Haven't finished reading this book yet.



Java Security
Oaks, Scott. 2001, 2nd edition. 599 pages.
Categories: Programming
Haven't finished reading this book yet.



Number Theory for Computing
Yan, Song Y. 2000. 381 pages.
Categories: Mathematics, Programming
Haven't finished reading this book yet.



Prime Numbers: A Computational Perspective
Crandall, Richard / Pomerance, Carl. 2001. 545 pages.
Categories: Mathematics, Programming
Haven't finished reading this book yet.