This tutorial (along with the others in this series) targets programmers
who want to familiarize themselves with cryptology, its
techniques, its mathematical and conceptual basis, and its
lingo. The ideal user of this tutorial has encountered
various descriptions of cryptographic systems and general
claims about the security or insecurity of particular software
and systems, but may not entirely understand the background
of these descriptions and claims. Additionally, many users
will be programmers and systems analysts whose employers have
plans to develop or implement cryptographic systems and
protocols (perhaps assigning such obligations to the very
people who will benefit from this tutorial).
Part 1
of this three-part tutorial, here on developerWorks, introduced the very basic
concepts of cryptography (for example, what encryption is and what
keys are). Part 1 also covered the basic notions of
cryptanalysis -- at least enough to help you understand some typical attacks and what it is to
break a protocol.
Part 2 (this tutorial) introduces readers to intermediate
cryptographic concepts. Users should feel comfortable with
these introductory notions (Part 1 is a good starting point
for those not already familiar with these concepts).
In this tutorial, I'll cover cryptographic algorithms
and protocols. The goal is not to cover the coding
and detailed workings of specific algorithms and protocols,
but rather to give users the conceptual background
necessary to understand and construct cryptographic
algorithms and protocols. Upon completing this tutorial, you
will have most of the building blocks needed to consider
cryptography.