 |
 |
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.
|
|
|
 |
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.
|
|
|
 |
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.
|
|
|
 |
"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.
|
 |
 |
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.
|
|
|
 |
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.
|