The Virtual Bookcase Reviews of 'Java Cryptography (Java Series (O'Reilly & Associates).)':
Reviewer amazon.com wrote:Cryptography isn't all there is to security. But rendering information unintelligible to those without the proper key usually plays a big role in any networked data-sharing system. Java Cryptography shows the Java programmer (with or without crypto experience) how to implement ciphers, keys, and other data-obscuring techniques in Java. The Java language includes lots of classes that are designed to facilitate cryptography, and this book explores them in depth. Key management classes, random-number generators, signed applets, and other parts of the Java security mechanism get attention in these pages. But most interesting are the author's examples. He has written a complete implementation of the ElGamal cipher as a provider in the framework of the Java Security API. If you want to understand how the Provider Architecture works, this is what you need to examine. Don't look here for an explanation of the mathematics, however. In addition to his discussions and examples for individual pieces of the cryptography infrastructure and his implementation of the ElGamal system, Knudsen includes two nifty crypto-enabled programs: a chat system and an e-mail system.
Reviewer Rob Slade wrote:
This book is intended to teach experienced Java programmers how to add
cryptographic elements to their applications. The text is not
intended to teach encryption algorithms, basic Java programming, or
the overall Java security model: there are other books that fulfill
those functions. There is one other limitation: much of the book
relies on the Java Cryptography Extensions (JCE) which are only
available to those in the United States and Canada (nudge, nudge,
wink, wink).
Chapter one lists some fundamentals of encryption and the relationship
to security. There are also a couple of programs right off the bat
that will let you explore message digests, and encrypting and
decrypting messages. The basics of confidentiality, authentication,
and some major cryptographic algorithms are outlined in chapter two.
The explanations are quite terse, but not out of line with the aim of
the book. Java Security Architecture (JCA) is explained in chapter
three, along with a quick overview of the API (Application Programming
Interface) and SPI (Service Provider Interface). Chapter four
introduces Java's own pseudo-random number generator, plus programming
for key seeds from keyboard timing. Key management, in chapter five,
is somewhat weak. The APIs only deal with hierarchical key
certification, but this may simply be an example of Knudsen dealing
strictly with the language, and leaving the concepts to others. I
was, however, bemused at some passages that may have suffered from a
lack of copy editing: for example, one section that seemed to confuse
production of Message Authentication Codes with working on Macintosh
computers. Authentication of various types is covered quite well in
chapter six. Chapter seven's guide to encryption covers details not
normally dealt with in cryptography texts because it must handle all
matters related to getting an encryption algorithm to actually
function in an application.
Chapter eight gives enough detail about signed applets to prove that
they are going to be browser specific for a while. Security provider
programming is covered in chapter nine, using the ElGamal algorithm as
an example. A sample application is created using an encrypted
version of the talk utility in chapter ten. An email application is
created in chapter eleven using th provider previously generated in
chapter nine. Chapter twelve closes off by looking at security design
for the system overall.
Appendices review BigInteger arithmetic in Java, the Base64 encoding
scheme (an option for converting binary objects to text characters for
emailing), Java archive files, Javakey, and a quick reference for the
Java cryptography classes as covered in the book.
Knudsen states that the book is written, as far as possible, without
assuming any prior knowledge of cryptography. In this aim he succeeds
rather well. The programmer with no background in encryption can
still add a reasonable layer of security to his or her application.
Those who study further, of course, will be able to ensure a higher
level of protection and reliability.
copyright Robert M. Slade, 1998
Add my review for Java Cryptography (Java Series (O'Reilly & Associates).)