Lattice-based cryptography is a promising post-quantum cryptographic approach that can withstand potential attacks from future quantum computers. This book will introduce the theoretical mathematics that underpins lattice-based cryptography, such as the hard problems based on lattices upon which the security of lattice-based cryptosystems rely. It will provide examples of how these hard problems can be used to build basic lattice-based cryptographic primitives, namely encryption, digital signatures and key exchange, in addition to more advanced primitives such as identity-based encryption (IBE), attribute-based encryption (ABE) and hierarchical identity-based encryption (HIBE). Subsequently, the practical aspects of designing efficient and robust lattice-based cryptosystems in both hardware and software will be detailed. The resilience of lattice-based implementations to physical attacks will be discussed in addition to appropriate countermeasures that can be integrated into implementations to defend against such attacks. Finally, three case studies will be described to illustrate how lattice-based cryptography can be successfully embedded into real-world scenarios.