Schneier, Bruce. Cryptography: Protocols, Algorithms, and Source Code in C. 2nd ed. New York, NY: John Wiley & Sons, 1996.