After a brief account of the history of cryptography, the latest data on encryption protocols and techniques are explained. Describes present-day applications ranging from electronic cash to anonymous messaging and current security concerns. The second section assumes fairly sophisticated knowledge of the C programming language and features numerous source code fragments. Practical implementations of the code are listed throughout the book's second half.
Bruce Schneier is a renowned security technologist, called a “security guru” by the Economist. He has written more than one dozen books, including the New York Times bestseller Data and Goliath (2014) and Click Here to Kill Everybody (2018). He teaches at the Harvard Kennedy School and lives in Cambridge, Massachusetts.
I think this book might have been great, but today, it shouldn't be considered more than a historical document. Even though a 20-year anniversary version was released, it has no changes but a new introduction and in it, Bruce Schneier says:
"For those who want a more current book, I recommend Cryptography Engineering, which I wrote in 2010 with Niels Ferguson and Tadayoshi Kohno. But for a review of those heady times of the mid-1990s, and an introduction to what has become an essential technology of the Internet, Applied Cryptography still holds up surprisingly well."
Getting hold of a copy of Applied Cryptography took some effort (maybe the crypto export controls it makes such a big deal about have something to do with it, but incompetence is more likely to blame), but it's everything I expected it to be: a rock-solid book about cryptography as she is practised, with enough theoretical background to be relevant and links to an endless amount more.
However, the first edition of this book came out in 1994, and this second edition in 1996, and that's a long time ago. How long? The URL the book lists for the NIST is a gopher address: gopher://csrc.ncsl.nist.gov. Large swathes of it just don't apply anymore, and only serve as historical curiosity—and there's not always an easy way to tell which those are. Much of the book focuses on DES, which is now well and truly buried as far as anyone except Hiroyuki Nishimura is concerned, and the expanding Internet has created whole new areas of consideration, including routine password storage (slow hashes aren't mentioned at all; crypt(3) is, but its deliberate slowness isn't even remarked upon).
Presumably one of Schneier's later books (like Practical Cryptography, though that's over a decade old now too) would be a better choice for people interested in the current situation, but Applied Cryptography is still more than excellent for historical context or for people who are interested in any of the specific algorithms or protocols discussed.
First published in 1993, Bruce Schneier’s Applied Cryptography: Protocols, Algorithms, and Source Code in C is one of the most influential books in the history of computer security. Often described as the “bible” of applied cryptography, it helped make a complex and previously specialised subject accessible to programmers, software engineers and technology enthusiasts. Its importance lies not only in the breadth of its technical coverage but also in its insistence that cryptography is a practical tool for protecting information, communications and digital systems.
Yet the book presents a curious dilemma for modern readers. Its explanations of fundamental concepts remain valuable, while much of its technical guidance belongs to an earlier era of computing. It is simultaneously a classic worth studying and a manual that must be approached with considerable caution.
A comprehensive introduction to cryptography
One of the book’s greatest strengths is its remarkable scope. Across its extensive chapters, Schneier examines cryptographic protocols, implementation techniques, encryption algorithms and their practical applications. The work moves from foundational concepts to detailed technical descriptions, offering readers a broad view of how cryptographic systems function and how their components interact.
The opening sections introduce essential ideas such as authentication, digital signatures, key exchange and secure communications. Schneier explains the principles behind public-key and private-key cryptography in a manner that helps readers understand not merely what these mechanisms do, but why they are necessary. He also explores more ambitious applications, including electronic voting and digital cash, demonstrating the potential of cryptography to support systems requiring privacy, integrity and trust.
The book then turns to the practical challenges of managing cryptographic keys and deploying algorithms correctly. These subjects are particularly important because secure encryption depends on much more than selecting a mathematical function. Keys must be generated, distributed, stored and protected appropriately, while protocols must be designed to withstand deliberate attempts at exploitation.
A substantial portion of the book is devoted to individual algorithms, including DES, Triple DES, Blowfish and RSA, alongside numerous other historical and specialised systems. Each receives technical treatment intended to help readers understand its operation and characteristics. For programmers interested in the development of cryptography, this encyclopaedic approach provides valuable historical context and an appreciation of the diversity of solutions that have been explored.
The inclusion of C source code is another defining feature. By connecting abstract descriptions with concrete implementations, Schneier attempts to bridge the gap between theory and programming practice. At the time of publication, this was an especially important contribution, offering developers a practical entry point into a field that could otherwise appear intimidatingly mathematical.
Clear writing and an engineering mindset
Perhaps the book’s most enduring achievement is its readability. Cryptography involves sophisticated mathematics, yet Schneier generally writes with clarity and a strong sense of purpose. His explanations make difficult concepts approachable without reducing the subject to a collection of simplistic analogies.
This accessibility helped introduce a generation of software developers to cryptographic thinking. Rather than treating encryption as an obscure specialist discipline, the book presents it as an essential component of modern computing. It encourages readers to consider how algorithms, protocols and key management combine to create a functioning security system.
The wider implications of this approach remain relevant. Cryptography does not operate in isolation: its effectiveness depends on the assumptions made by designers, the behaviour of users and the surrounding software infrastructure. A mathematically sound algorithm can still contribute to an insecure system if it is incorporated into a flawed protocol or implemented incorrectly.
This is where the book retains much of its educational value. Studying the reasoning behind earlier cryptographic designs helps readers understand why certain approaches were adopted, where their weaknesses emerged and how security thinking developed over time.
The historical perspective is particularly useful. The book documents an era when encryption standards, government policies and the availability of cryptographic technology were subjects of intense debate. Its treatment of issues such as the Clipper Chip and restrictions on encryption exports illustrates that cryptography has never been exclusively a mathematical or programming concern. It has also been shaped by political, economic and social forces.
The problem of outdated algorithms and code
The book’s greatest weakness is inseparable from its age. Cryptography has evolved substantially since the early 1990s, and the methods considered important or acceptable at the time cannot automatically be regarded as secure today.
The text discusses algorithms such as DES and hash functions such as MD5 and SHA-1, which are no longer suitable for many modern security applications. DES has an inadequate key length for contemporary security requirements, while MD5 and SHA-1 have known collision weaknesses that make them unsuitable for security-sensitive uses requiring collision resistance. The book also predates the adoption of AES, which became a major modern encryption standard, and does not reflect the subsequent development of contemporary cryptographic practice.
The difficulty extends beyond individual algorithms. Security depends on how cryptographic primitives are combined, how keys and nonces are handled, and how implementations respond to unexpected inputs and errors. Developments in authenticated encryption, elliptic-curve cryptography and the understanding of side-channel attacks have substantially changed the advice that responsible developers should follow.
Thomas Ptacek’s critical 2013 essay, “Applied Cryptography Engineering”, published on the Schneier on Security website, makes this distinction particularly clear. Ptacek acknowledges the book’s historical significance and accessibility while arguing that it is dangerous to use as a contemporary implementation manual. His criticism highlights a fundamental problem: readers can understand an algorithm correctly yet still build an insecure system by applying it in an inappropriate mode or combining it with other components incorrectly.
The C code presents a related concern. Source code that illustrates an algorithm is not necessarily suitable for production use. Real-world cryptographic software must account for issues such as secure randomness, memory handling, timing behaviour, error conditions and interactions with other components. These concerns cannot be resolved simply by copying a published implementation.
For this reason, modern developers should not implement cryptographic primitives themselves merely because the book supplies the code. They should use reputable, maintained cryptographic libraries and established protocols, following current security guidance. Libraries such as OpenSSL and libsodium provide well-established tools, although their correct use still requires care.
This limitation does not make the book worthless. Rather, it changes the way it should be read. Its algorithms and code are best approached as historical and educational material, not as ready-made solutions for contemporary software.
Is it still worth reading?
The answer depends on the reader’s objectives.
For students of computer science, security researchers and technically curious readers, Applied Cryptography remains a valuable resource for understanding the development of cryptographic ideas. Its broad coverage provides a foundation for exploring encryption, authentication, digital signatures and the design of secure protocols. It also offers a useful reminder that the history of cryptography is a process of continual refinement, in which once-respected methods may eventually become inadequate.
For professional developers seeking to build secure applications today, however, the book is not an appropriate standalone guide. Its age means that important standards, attacks and implementation practices are missing or treated differently from how they would be today. Reading it without consulting current sources could encourage misplaced confidence in techniques that are no longer recommended.
Readers who want to move from conceptual understanding to modern engineering practice should consider Cryptography Engineering: Design Principles and Practical Applications, written by Niels Ferguson, Bruce Schneier and Tadayoshi Kohno. Published in 2010, it focuses more directly on the challenges of designing and implementing cryptographic systems in the real world. Schneier’s own website describes it as an updated development of the earlier Practical Cryptography, with an emphasis on effective cryptographic engineering rather than simply surveying algorithms.
Even that book should be supplemented with current standards, maintained library documentation and contemporary security guidance. Cryptography changes too quickly for any printed text to serve indefinitely as the final authority on implementation.
Final verdict
Applied Cryptography deserves its reputation as a landmark work. Bruce Schneier succeeded in making cryptography more approachable, bringing together a vast collection of protocols, algorithms and practical examples in a readable and ambitious reference. Its influence on software development and security education is difficult to overstate.
Nevertheless, its historical importance should not be confused with present-day technical authority. The same detailed code and algorithm descriptions that once made the book revolutionary now require careful qualification. Readers must distinguish between understanding how a cryptographic system works and knowing how to build a secure system using current technology.
Ultimately, Applied Cryptography is best regarded as a classic of computer security: an invaluable guide to the foundations and history of the discipline, but an outdated reference for implementing modern cryptographic systems.
It is highly recommended for readers who want to understand the ideas that shaped applied cryptography. For developers responsible for securing software today, however, it should be a starting point for further study rather than a set of instructions to follow.
Lots of detail on algorithms that are now out of date, but the opening chapters on crypto protocols were terrific. By far the largest bibliography I recall seeing - over 1500 entries. I'd recommend Practical Cryptography (or its later edition, Cryptography Engineering) above this one, even though (and partially *because*) it lacks the level of implementation / algorithm detail here.
Great read! As this book is almost 25years old it is not up to date on the latest crypto algorithms, but how often can you read a technical book and check with wikipedia or google and look 25 years into the future?
As security needs evolve, methodologies adapt. A primary example of this occurring can be found in the shift towards cyber warfare. Advanced protection measures are needed to secure online activity on a regular basis. This book dissects the coding skills that are revolutionized the field of encrypted communications. The text is highly relatable, especially for information security jobs.
A solid compendium of all things cryptography. Probably not a book to read cover-to-cover, this sprawling reference touches almost every corner of the subject. Schneier treats the theory behind, and the algorithmic implementations of, all the major cryptographic primitives (pre-AES, though); this is the meat and potatoes found in virtually all crypto texts. But Schneier also covers all the connective tissue -- the stuff you need in order to implement cryptographic solutions in the real world, things like key management and exchange, and a wide range of cryptographic protocols for authentication, establishing identity, and for the actual deployment of ciphers in real applications. Nothing is covered with exquisite depth (except for DES, which gets its own chapter), but the treatment is heavily-referenced and buoyed by Schneier's sharp commentary. This is a good resource for those seeing this material for the first time, or for those looking for references so they can dig deeper.
Let's get real. I did not finish this book. While it may be a classic of cryptography, it is not written for the layperson at all. I stuck with it for as long as I could and did learn some things at the start, but it quickly moved beyond my level of comprehension. Still, I'm glad to know why every explanation of cryptography talks about Alice, Bob, and Eve!
I read the 20th anniversary edition. As the preface admits, the book is dated; it does cover some of the algorithms that are still in use today (RSA, Diffie-Hellman, SHA-1, MD5, Kerberos), but it also describes a ton of stuff that has no practical meaning anymore. If you're looking for cryptography as it is applied today, look elsewhere. (The preface suggests Cryptography Engineering by Schneier, Ferguson, and Kohno; I haven't read it yet.)
However, this book is more than an algorithms list, and that's what keeps it relevant. You see, there are a lot of stuff around cryptography, and it turns out to be just as important as the algorithms you pick! The fact that you're using an industry-standard RSA doesn't mean you're safe; it means your security hinges on the security of the key. How do you generate it? How do you store it? How do you transmit it? (Should you even?) How do you rotate it? How do you destroy it? It's not enough to be a skillful builder who picks good building blocks; you also got to be an architect and ensure that the structure won't fall over in a light breeze.
Schneier also lists a lot of broken algorithms. At first, I thought it's a waste of space, but the purpose gradually became clear: he demonstrates why people shouldn't roll their own crypto. He quips that anyone can design a cipher they themselves cannot break, but also provides abundant evidence that most of the stuff that can be imagined can also be broken. From this day on, I'd have a paranoia fit every time I have to combine cryptography-related functions together; you just never know, even if you're a PhD and know everything there is to know.
Finally, and somewhat predictably, the book is still good at explaining basics. As noted above, you shouldn't use them to construct anything yourself, but it at least enables you to satisfy your curiosity and make sense of Wikipedia articles.
I'm not a cryptographer, nor an infosec specialist, so I'm not in a position to give recommendations. But I got some new insights from reading this book, and I certainly got a "map" of cryptography as a field, so there's that.
This part is stollen from the book If tomorrow comes by Sidney Sheldon: "Here's how Alice, who doesn't even know the rules to chess, can defeat a grandmaster. (This is sometimes called the Chess Grandmaster Problem.) She challenges both Gary Kasparov and Anatoly Karpov to a game, at the same time and place, but in separate rooms. She plays white against Kasparov and black against Karpov. Neither grandmaster knows about the other. Karpov, as white, makes his first move. Alice records the move and walks into the room with Kasparov. Playing white, she makes the same move against Kasparov. Kasparov makes his first move as black. Alice records the move, walks into the room with Karpov, and makes the same move. This continues, until she wins one game and loses the other, or both games end in a draw."
Applied Cryptography is a lengthy and in depth survey of its namesake. Detail oriented with bits of temporal or political observations, Bruce Schnier’s book takes the reader through weak and strong crypto protocols and algorithms. This book also brings a fair amount of history along with it. The history, for example, of DES is fascinating in its own right. What was NSA doing? What were their intentions? Was it a happy coincidence of missed expectations? By its very secretive nature, the reader is left to make their own conclusions based on a limited set of facts.
This kind of book will, more than likely, appeal to a very specific crowd. But if you like mathematics, computer science, and secrets, then this is for you (if you haven’t read it already). Enjoy!
What a wonderful book! I studied some crypto in college (public key and zero knowledge proofs) and found the field almost incomprehensible: lots of very specific number theories, very little overview information. Applied Cryptography fills this vital gap very successfully, going from completely introductory information to some fairly specific details on particular systems. The 2000 or so references in the back are great when you need to follow up on particular details. It's good this book was published when it was, right at the time that the US government is trying to censor net traffic and stop people from using strong cryptosystems.
This book bring back fond memories, from several hops ago.
When the dinosaurs roamed the earth, an invitation was given out to all employees, for a class on cryptography with FREE pizza during lunch break. Who can resist free food.
The content didn't make a whole lot of sense at the time, skimmed thru the book on all the buzzwords. but it sure does now. Very dense reading. since SSL/TLS is in everything! It helps to understand the underlying principles.
Both informative and witty. Despite being thirty years old, the book still thoroughly discusses a lot of the seminal cryptographic methods, alongside their actual implementations (the "applied" part). The best part is that for a (great) textbook, the author's voice was prominent without being distracting.
Schneider predicted so much about the advanced methods of cryptography that would be used in modern network servers that one could easily believe the man was a master of (11) DIVINATION. Not only that, it gave me new ideas about how one might hide messages (3) AND information in the source code of another person's website. Will have to consider using that in the future.
An extensive review of cryptographic protocols, techniques, algorithms, and implementations. The book makes a good reference for specific technologies. It gives you a sense of the number of ideas that have been tried and how careful one needs to be to make effective use of cryptography.
621 pagine di libro (listati esclusi, che tanto non è che vengano letti), ben densi. Non è certo una lettura di quelle da farsi prima di andare a dormire, a meno che non si soffra di insonnia forte e si cerchi qualcosa di veramente efficace. Però il libro merita di essere letto da cima a fondo, e non solo usato come testo di riferimento: perché oltre ad avere una panoramica di tutti i metodi noti di crittografia e dei problemi relativi si ha anche una trattazione delle debolezze dei vari metodi, e in genere una storia non romanzata ma pratica della lotta tra chi vuole nascondere le cose e chi cerca di scoprirle. Inutile spiegare chi è Schneier: uno tra gli esperti principali - e più taglienti - nel campo della crittografia. Se insomma avete un interesse non solo teorico per la materia, questo libro è il migliore investimento che potete fare.
This is the mother of all cryptographic books ever published, explaining each & every encryption algorithm EVER designed on this planet. Its an exhaustive list of algorithms, explaining each in detail, with their strengths and weaknesses, in a practical manner. The book is highly mathematical, and security people who deal only with codes and networks might have difficulties in the esoteric level of maths involved. All in All, Applied Cryptography is a great book, a must have on every security/network specialist who's got to deal with encryption.
For its time, it was amazing, not just for the subject matter but the clarity of its explanation. For me, it helped me understand a lot of the mathematical background and the pitfalls. I think he was already beginning to focus on the security implications of protocols over cryptographic implementation and the combination of the two subjects is powerful. Yes, a lot is dated, but the same mistakes keep being made. Learn from it and then find a more current text for implementations.
This is an excellent book on all the mainstream and not so mainstream encryption algorithms(as of several years ago). It does not include the new AES, or recent issues with md5, but Schneier has given some recommendations/predictions in this book that are in line with recent news.
I would have given this 5 start, but it is several years old, and needs to be updated.
I instantly had bought this one after I heard a lot from Internet sources about Bruce and his work. I have only skimmed through the book; looks good as an introductory text. Bruce Schneier is well known for his contributions in the field of cryptography and computer security; his ideas and writings have ignited many minds. I hope this one does good too. :)