Applied cryptography (2nd ed (1996)

by B Schneier