Explore Go: Cryptography (Go 1.23 edition)
Explore Go: Cryptography (Go 1.23 edition)
Can you keep a secret? I hope so, because much of the modern world is built on cryptography: the art of secret messages. This book will show you what it’s all about and how it really works, with dozens of example programs in Go. Includes free updates for life.
You can also buy this book at a discount as part of the Complete Go Library.
Reviews
⭐⭐⭐⭐⭐ “One of the most accessible and even fun books about cryptography I've ever read. John writes vividly, with many a neat turn of phrase, and the text is full of wit and humour.”
—Kurtis Connor
⭐⭐⭐⭐⭐ “I laughed, I learned. It's a great book that manages to explain complicated ideas in really simple, straightforward language.”
—Dian Amencourt
⭐⭐⭐⭐⭐ “This is a remarkable book, practically fizzing with enthusiasm for its subject. It whisks you through the worlds of cryptography, mathematics, physics, and computer science, and shows you that they're all connected in surprising and thought-provoking ways. Highly enjoyable.”
—Cuong Quoc
⭐⭐⭐⭐⭐ “John has a knack of writing almost luminously clear explanations that stick in your mind long after finishing the book.”
—Patrick Devlin
About the book
Have you ever wondered how passwords are stored securely? What makes a good password? How codes and ciphers are designed—and broken? Where random numbers come from, and what makes them random? What are the connections between lava lamps, space games, digital signatures, black holes, and Bitcoin? Let's find out.
Join Alice, Bob, Eve, and Mallory as we learn about the fundamental principles of cryptography and digital security, from brute force and blockchains to keyspaces and hashing. We'll build a cipher system in Go from scratch, with step-by-step instructions and code examples at each stage (also available on GitHub).
Starting with the simplest cipher imaginable, we'll gradually improve the system by attacking it, adding sophisticated features like block chaining, padding, digests, and authentication. Along the way, you'll develop a powerful intuitive understanding of ciphers and keys, what makes them strong (or weak), and how to use them securely.
We'll see how state-of-the-art modern algorithms like AES, SHA-256, Diffie-Hellman, and RSA work under the hood, and how to integrate them into real-world Go tools. This book is essential reading for all Go programmers who have to deal with encryption, authentication, and security... in other words, all of us!
What you’ll learn
By reading through this book and completing the challenges, you’ll learn about:
The fundamental principles of codes and ciphers
Building software test-first in Go
How to write useful command-line tools
Password security, keyspaces, and cracking
Blocks, streams, chains, and cipher modes
Padding, number bases, and endianness
Pseudo-random and true random number generators
Entropy, complexity, and quantum uncertainty
Attacks, nonces, and initialization vectors
Message digests, integrity, and authentication
MD5, SHA-1, SHA-256, and SHA-3
Rainbow tables, salts, and zero-knowledge proofs
Cryptocurrencies, key exchange, and asymmetric encryption
Public-key cryptography: Diffie-Hellman and RSA
AES/Rijndael internals and implementations
AES-256 and AES-GCM
Modern cryptography with the Go standard library
Post-quantum cryptography
What you get
Your digital download contains the book in PDF format. This should be suitable for any ebook reader, computer, phone, or tablet.
Updating to the latest edition
All my books come with free updates for life, so if you’ve bought a previous version of this book, here’s what you need to do to get the latest edition. Click the link in your original download email (make sure you save this, as it’s your key to future updates). You’ll see what looks like an error page saying your download link for the old edition has expired, but that’s okay: click the link in the text, and you’ll be sent a new download email for the current edition.