Undergraduate textbook by Mike Rosulek
The Joy of Cryptography is a textbook that I've been writing for CS427, my undergraduate course in cryptography.
What's so special about it?
It's free and will always be free (Creative Commons license)! It is supported by the Oregon State University open textbook initiative.
The pedagogical approach is anchored in formal definitions/proof of security, but in a way that I believe is more accessible than what is "traditional" in crypto. All security definitions are written in a unified and simplified "game-based" style. For an example of what security definitions look like in this style, see the index of security definitions (which will make more sense after reading chapters 2 & 4). For example proofs of security in this style, see the supplementary material below.
It contains over 120 exercises.
Everything here is in draft form. This will become evident as you read through the text. Still, I've been successful using the text as the primary reference in an actual course.
My course CS427 is only a 10-week course. For that reason, much important material is still missing from the text!
"The Joy of Cryptography" is a silly title, but all the sensible titles were already taken. It was at least better than "You Can't Spell Cryptography without Cry". Anyway, actual joy not guaranteed.
Download the current draft (PDF, Feb 6, 2020)
Current table of contents (links are for PDFs of individual chapters):
Supplementary MaterialI have also provided some slide decks that visually illustrate the steps of some hybrid proofs from the text: (At the moment, these are slightly out of sync with the text; sorry!) And an interactive padding oracle attack demo:
For a second opinion, you might want to check out these other excellent references. They are also the reason I had to choose a silly name for mine -- all the good names were taken.