Jak istotna w dzisiejszym świecie jest kryptografia, nikomu raczej nie trzeba tłumaczyć. Co jednak zrobić, by nasza aplikacja była jednocześnie wydajna i bezpieczna? Jak w jednym z najpopularniejszych i najszybciej rozwijających się języków programowania został rozwiązany problem szyfrowania? Za główny cel autor postawił sobie przybliżyć czytelnikowi wszystkie te zagadnienia w sposób jak najbardziej przystępny.
Co znajdziemy w książce? Pierwsze pięć rozdziałów dotyczy podstaw, czyli przede wszystkim interfejsów (JCE, JCA) z wykorzystaniem dostawcy Bouncy Castle oraz podstaw kryptografii, takich jak szyfry symetryczne, asymetryczne, skróty wiadomości (MAC, HMAC), a także również konkretne algorytmy: RSA, DSA. Kolejne rozdziały to już prawdziwa gratka dla osób poważnie zajmujących się tą dziedziną informatyki. Przejdziemy poprzez notację ASN.1, operacje na certyfikatach, CMS i S/MIME, na SSL i TLS kończąc. Jako dodatek znajdziemy skrót terminów i ważniejszych zagadnień, rozszerzenie tematów (np. krzywe eliptyczne) i podzieloną tematycznie bibliografię.
Pierwsze, na co zwróciłem uwagę, to bardzo dobry podział merytoryczny treści. Autor wybrał schemat: opis, jak to działa, spróbuj sam i konsekwentnie przestrzega go aż do samego końca. Ma to istotny wpływ przy poszukiwaniu odpowiedzi na konkretne pytania, gdyż zapobiega bezsensownemu wertowaniu stron. Przykłady są dobrane do konkretnego zagadnienia i nie zawierają zbędnych dodatków. Spodobało mi się, że autor nie zasypuje czytelnika olbrzymią liczbą profesjonalnych terminów, dzięki czemu czyta się tę pozycję dość przyjemnie. Dużym atutem są również przykłady operacji szyfrowania na strumieniach, m. in. plikach.
Z minusów należy wymienić fakt, że dowiemy się tylko i wyłącznie o jednym dostawcy klas implementujących SPI (Service Provider Interface) -- Bouncy Castle, którego jednym z założycieli jest autor. Użyte klasy narzędziowe w następujących po sobie rozdziałach są kolejnymi rozszerzeniami poprzednich, co bywa uciążliwe, gdy chcemy szybko wykorzystać daną klasę w swoim projekcie. Całość obejmuje J2SE 5.0, więc próżno szukać przykładów z wykorzystaniem JEE. Przy pierwszym czytaniu omawianie poszczególnych metod może być nużące, jednak gdy zajdzie potrzeba dotarcia do szczegółowych informacji o wybranej funkcji, jest to wysoce przydatne.
Podsumowując -- nie jest to książka idealna, gdyż autor w pewnych obszarach poszedł na kompromis pomiędzy oczekiwaniami zaawansowanych i początkujących programistów. Mogę jednak śmiało stwierdzić, że "Kryptografia w Javie" to dobra pozycja, w której znajdziemy zarówno dobrze przygotowaną teorię, jak i przepis na praktyczne zastosowanie nabytej wiedzy -- dość aktualnej, gdyż obejmującej J2SE 5.0. Polecam ją zarówno słabo orientującym się w tematyce, jak i tym, którzy napisali już niejeden kod, gdyż każdy, kto zajmuje się tworzeniem oprogramowania w Javie, znajdzie w niej coś dla siebie. Z pewnością nie jest to książka, którą po przeczytaniu odstawia się na półkę, ponieważ do opisów poszczególnych metod i szczegółowych rozwiązań z pewnością czytelnicy wrócą nie raz w trakcie tworzenia swoich aplikacji.
Hakin9 Marcin Kulawinek; 07/2007