Java加密与解密的艺术
上QQ阅读APP看书,第一时间看更新

前言

众所周知,Java EE是目前企业应用中使用最广泛的技术之一,几乎在任何一个领域都能看到Java EE的身影。随着加密与解密算法的发展,Java加密与解密技术不断演进,不断提高着数据的安全性,已成为各大企业应用中一项关键性的技术。

很多企业应用领域的架构师都很关注加密与解密算法在应用中的使用,譬如用户密码加密、网络协议加密等。如何在名目繁多的Java加密与解密技术中选择合适的算法进行企业级应用开发,如何解决Java加密与解密技术开发过程中遇到的各种问题,这成为许多开发者,尤其是架构师关注的焦点问题。然而,国内目前还没有一本书能解决这些问题。本书的作者因工作需要,采用Java加密与解密技术成功构建了企业级网银系统。在开发过程中,作者感受到了Java加密与解密技术的精妙。作者希望把Java加密与解密技术在企业应用开发领域的经验和心得分享给广大读者,提升企业应用的安全性。

本书面向的读者

本书主要适合以下读者:

❑ 所有利用Java进行企业级应用开发的软件工程师

对于企业级应用软件工程师来讲,这将是一次系统的密码学之旅。本书将介绍密码学理论、Java相关算法实现、开源组件包介绍、数字证书与安全协议等相关内容,并配有相关实例为读者提供详尽实现指导,为构建企业级安全应用提供完整的技术支持。

❑ 系统架构师

对于系统架构师来讲,如何使用成熟技术快速构建安全企业应用是安全工作的第一要务。在算法方面,本书详述了Java 6对于密码学算法的相关实现,针对AES算法密钥长度受限问题给出解决办法。同时,针对当前Java 6不支持的算法,如SHA224、ElGamal和ECDSA等,本书详细介绍如何使用第三方开源加密组件包Bouncy Castle进行相关算法实现补充,并且还详细介绍了Apache Commons Codec,这些成熟的组件包都是构建安全企业应用必不可少的工具包。在架构方面,本书浓墨重彩地介绍了数字证书的构建、SSL/TLS协议服务搭建,并通过相关实例介绍如何构建单向/双向认证服务。

❑ 其他安全领域的软件工程师

如今企业级应用已经逐步转变以服务为主的异构体应用,如Web Service应用等。Java加密算法实现遵循密码学相关国际标准,完全可以与其他计算机语言(如C++、C#等)构建的异构体应用进行数据加密交互。本书为读者选择合适的算法并提供详尽的技术实现。

如何阅读本书

全书共分为3个部分:基础篇、实践篇、综合应用篇。

❑ 基础篇

本篇共包含4个章节,主要对Java企业级应用安全、密码学理论和Java中与加密相关的API进行了详细介绍,并详细阐述了第三方组件包Bouncy Castle和Apache Commons Codec相关的API。

第1章主要阐述了当前的安全问题,并给出了安全的相关标准。本书将在后续章节内通过各个算法介绍逐一实现这些标准,这些标准也是评判系统安全级别的准则。

第2章主要详述了密码学相关理论知识,并回顾密码学的发展历程。未曾接触过密码学的读者,可通过本章了解密码学理论的基础,本书将在后续章节中多处应用该章相关技术名词。

第3章详细阐述了Java 6安全领域相关API内容,为读者详尽介绍每一个与密码学相关的类以及方法。该章将是每位安全领域软件工程师必读的内容,在阅读本书的后续章节时需经常翻阅该章内容。

第4章主要介绍如何通过权限文件加强系统安全级别,并详述开源组件Bouncy Castle和Apache Commons Codec相关的API内容。如果您正苦于AES算法密钥长度受限,SHA224、ElGamal、ECDSA等算法缺少支持等问题,那么请您阅读该章;如果您非常希望找到Base64及十六进制编码算法的成熟开源组件,也请您阅读该章。本书将在后续章节中介绍如何使用这些开源组件并实现相关算法。

❑ 实践篇

这篇主要对现今流行的所有加密算法进行了全面阐述和深入剖析,并配合相关测试用例演示算法实现。在阅读这篇前,请阅读本书第2章相关理论知识,并了解第3~4章相关的API内容。这篇将是所有企业级应用Java软件工程师的必读内容。

第5章介绍了极为简单的Base64算法,该算法可以作为加密算法的入门算法。如果仅仅需要确保应用交互之间的数据达到隐藏的目的,那么您在第5章中一定可以找到满意的答案。

第6章主要详述了MD系列、SHA系列以及MAC系列三大消息摘要算法相关实现。并详细介绍如何使用Bouncy Castle构建Java 6所不支持的算法实现。对于一般网络应用,经常需要为下载软件提供对应的摘要信息用于校验文件完整性。相信在阅读这章内容后,您可以熟练地使用Apcahe Commons Codec为应用实现校验文件完整性的需求。

第7章将沿着对称加密算法的发展历程,详述DES、DESede、AES和PBE四大算法的实现细节。并详细介绍如何使用Bouncy Castle构建目前较为常用的IDEA算法。这些算法适用于中小型企业级应用网络数据加密交互需求,同时也适用于其他安全领域的相关需求,是应用最为广泛的加密算法,更是密码学领域的的核心算法。如果仅仅想要通过对称加密算法以及消息摘要算法构建简单的加密网络应用,那么该章提供的实例将非常合适。

第8章主要详述了构建于对称加密算法之上的非对称加密算法,包括DH、RSA和ElGamal三大常用算法。该章是本书后续章节内容的基础,数字签名算法、数字证书、安全协议等内容都与该章内容息息相关,请在阅读后续章节前能够对该章内容有较深入的阅读。如果对单向/双向认证服务底层实现非常有兴趣,并想要知道它的来龙去脉,那么该章就是探究该技术旅途上的第一个驿站。

第9章详述了基于消息摘要算法和非对称加密算法之上的数字签名算法,包括RSA、DSA和ECDSA三大常用算法。数字签名算法是消息摘要算法的延续,是单向/双向认证服务核心认证技术。如果想通过非对称加密算法构建简单的网络加密应用,并期望使用数字签名算法对数据进行校验,那么该章的实例将非常合适。

❑ 综合应用篇

这篇不仅细致地介绍了加密技术对数字证书和SSL/TLS协议的应用,而且还以示例的方式讲解了加密解密技术在实际网络中的各种应用,极具实践指导性。请在阅读这篇前仔细阅读实践篇的相关内容。这篇内容将是系统架构师的最爱。

第10章详细介绍了如何使用KeyTool和OpenSSL两大工具进行数字证书管理,并详细介绍如何在Java中使用数字证书。数字证书是非对称加密算法公钥的载体,是SSL/TLS协议和单向/双向认证服务基础。如果想要构建安全的HTTPS网络服务应用,请先阅读该章内容。

第11章主要介绍了SSL/TLS协议及单向/双向认证服务。这将是探究单向/双向认证服务技术旅途上的最后一站。该章将详述如何通过简单配置Tomcat服务器快速构建单向/双向认证服务,内容详实、极具实践性。

第12章是本书的实例集合,通过三套网络应用实例揭示常规网络应用安全、即时通信网络应用安全和以数据交互为主的Web Service应用安全,并通过网络监测工具WireShark对其效果进行检测。通过不同算法的组合,三套实例逐步升级自身系统的安全级别,极具指导意义。该章为解决网络安全问题提供了可行性参考。

通过阅读本书,读者不仅能全面掌握Java加密与解密的各种基础知识,而且还能进一步了解Java加密与解密的高级技术和技巧,从而将这些知识都运用到实际开发中去。