Bruce Schneier - Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition