The main reference for the course is Stinson: Cryptography: Theory and Practice (2nd edition). However, some topics covered in class do not appear in the book. Furthermore, it is always helpful to see more than one approach to a particular subject. Other useful textbooks and general references include:
• [Sch] B. Schneier: Applied Cryptography. This book is a useful reference for software impelementation. Also provides a very intuitive approach to the underlying protocols.
• [TW] W. Trappe and L. C. Washington: Introduction to Cryptography with Coding Theory.
• [BR] M. Bellare and P. Rogaway: Lecture Notes for a graduate course at UCSD.
• [GB] S. Goldwasser and M. Bellare: Lecture Notes on Cryptography. Definitions and theoretical foundations of cryptography on a more advanced level.
• [MvOV] A.J. Menezes, P.C. van Ooorschot, and S.A. Vanstone: Handbook of Applied Cryptography. Comprehensive reference to all areas of cryptography.
• [G] O. Goldreich: Fragments of a Book. An excellent, but more advanced, overview of cryptography. Part I (containing chapters 1-4) has recently been published as a book.
• Chapter 1: Introduction and Background.
• Chapter 2: One-Way Functions.
• Chapter 3: Pseudorandomness.
• Chapter 4: Zero-Knowledge Proof Systems.
• Chapter 5: Encryption.
• Chapter 6: Signatures and Message Authentication.
An exciting (non-technical) overview of cryptography is the well-known book by Kahn: The Codebreakers. Some excellent references for computational number theory and applied algebra include:
• [Ang] D. Angluin: Lecture Notes on the Complexity of Some Problems in Number Theory. Available for download (ps | pdf).
• [Ch] L.N. Childs: A Concrete Introduction to Higher Algebra. An accessible reference to algebra and number theory, with many cryptographic applications.
Finally, this list contains papers mentioned in class, often going into more detail or dealing with more advanced material than what was covered in class.
(Note: The year in brackets refers to the first year the result was published, while the reference itself is to the final (journal) version of the paper. For example, the result in [GGM84] was first published in 1984, but the journal version did not appear until 1986.)