Applied cryptography (2nd ed). Protocols, algorithms, and source code in C (1996)

by B Schneier