Cryptography plays a crucial role in many aspects of today's world, from internet banking and ecommerce to email and web-based business processes. Understanding the principles on which it is based is an important topic that requires a knowledge of both computational complexity and a range of topics in pure mathematics. This book provides that knowledge, combining an informal style with strong proofs of the key results to provide an accessible introduction. It includes many examples and exercises, and is based on a highly successful course developed and taught over many years....