Schneier, Bruce. Applied Cryptography: Protocols, Algorithms, and Source Code in C . John Wiley & Sons, 1995.