首页>参考读物>计算机科学与技术>综合

Java加密与解密的艺术
作者 : 梁栋 著
出版日期 : 2010-03-18
ISBN : 978-7-111-29762-8
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 462
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书是Java安全领域的百科全书,密码学领域的权威经典,4大社区一致鼎力推荐。
全书包含3个部分,基础篇对Java企业级应用的安全知识、密码学核心知识、与Java加密相关的API和通过权限文件加强系统安全方面的知识进行了全面的介绍;实践篇不仅对电子邮件传输算法、消息摘要算法、对称加密算法、非对称加密算法、数字签名算法等现今流行的加密算法的原理进行了全面而深入的剖析,而且还结合翔实的范例说明了各种算法的具体应用场景;综合应用篇既细致地讲解了加密技术对数字证书和SSL/TLS协议的应用,又以示例的方式讲解了加密与解密技术在网络中的实际应用,极具实践指导性。
Java开发者将通过本书掌握密码学和Java加密与解密技术的所有细节;系统架构师将通过本书领悟构建安全企业级应用的要义;其他领域的安全工作者也能通过本书一窥加密与解密技术的精髓。

图书特色

在如今这个信息化时代,数据是一切应用的核心和基础,有数据存在的地方就会有安全隐患,而密码学则是解决绝大多数安全问题的银弹。
Java作为全球最受欢迎的编程语言,它的应用遍及企业级应用的各个领域,安全是所有企业级应用中最突出、重要的问题。然而,这些问题从来就不是一种武器就能解决的。消息摘要算法用于数据校验、对称加密算法用于数据加密、非对称加密算法用于密钥交换、数字签名算法用于身份验证,等等。若要构建安全、坚固的Java企业级应用,不仅要深入了解每种算法的原理并将它们综合运用,而且还要悟透Java加密与解密技术的本质。
作 者 简 介
梁 栋  资深Java开发者,有丰富的Spring、Hibernate、iBatis等Java技术的使用和开发经验,擅长Java企业级应用开发;安全技术专家,对Java加密与解密技术有系统深入的研究,实践经验亦非常丰富。他还是一位出色的项目经理,是V8Booker(手机电子书)项目的核心开发团队成员之一,负责核心模块的开发;同时他还在V8NetBank(网银系统)项目中担任项目经理,负责系统的架构和核心模块的开发。

构建安全Java应用的权威经典,5大社区一致鼎力推荐!

构建安全Java应用的权威经典,5大社区一致鼎力推荐!

图书前言

众所周知,Java EE是目前企业应用中使用最广泛的技术之一,几乎在任何一个领域都能看到Java EE的身影。随着加密与解密算法的发展,Java加密与解密技术不断演进,不断提高着数据的安全性,已成为各大企业应用中一项关键性的技术。
  很多企业应用领域的架构师都很关注加密与解密算法在应用中的使用,譬如用户密码加密、网络协议加密等。如何在名目繁多的Java加密与解密技术中选择合适的算法进行企业级应用开发,如何解决Java加密与解密技术开发过程中遇到的各种问题,这成为许多开发者,尤其是架构师关注的焦点问题。然而,国内目前还没有一本书能解决这些问题。本书的作者因工作需要,采用Java加密与解密技术成功构建了企业级网银系统。在开发过程中,作者感受到了Java加密与解密技术的精妙。作者希望把Java加密与解密技术在企业应用开发领域的经验和心得分享给广大读者,提升企业应用的安全性。
本书面向的读者
  本书主要适合以下读者:
  q 所有利用Java进行企业级应用开发的软件工程师
  对于企业级应用软件工程师来讲,这将是一次系统的密码学之旅。本书将介绍密码学理论、Java相关算法实现、开源组件包介绍、数字证书与安全协议等相关内容,并配有相关实例为读者提供详尽实现指导,为构建企业级安全应用提供完整的技术支持。
  q 系统架构师
  对于系统架构师来讲,如何使用成熟技术快速构建安全企业应用是安全工作的第一要务。在算法方面,本书详述了Java 6对于密码学算法的相关实现,针对AES算法密钥长度受限问题给出解决办法。同时,针对当前Java 6不支持的算法,如SHA224、ElGamal和ECDSA等,本书详细介绍如何使用第三方开源加密组件包Bouncy Castle进行相关算法实现补充,并且还详细介绍了Apache Commons Codec,这些成熟的组件包都是构建安全企业应用必不可少的工具包。在架构方面,本书浓墨重彩地介绍了数字证书的构建、SSL/TLS协议服务搭建,并通过相关实例介绍如何构建单向/双向认证服务。
  q 其他安全领域的软件工程师
  如今企业级应用已经逐步转变以服务为主的异构体应用,如Web Service应用等。Java加密算法实现遵循密码学相关国际标准,完全可以与其他计算机语言(如C++、C#等)构建的异构体应用进行数据加密交互。本书为读者选择合适的算法并提供详尽的技术实现。
如何阅读本书
  全书共分为3个部分:基础篇、实践篇、综合应用篇。
  q 基础篇
  本篇共包含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及十六进制编码算法的成熟开源组件,也请您阅读该章。本书将在后续章节中介绍如何使用这些开源组件并实现相关算法。
  q 实践篇
  这篇主要对现今流行的所有加密算法进行了全面阐述和深入剖析,并配合相关测试用例演示算法实现。在阅读这篇前,请阅读本书第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三大常用算法。数字签名算法是消息摘要算法的延续,是单向/双向认证服务核心认证技术。如果想通过非对称加密算法构建简单的网络加密应用,并期望使用数字签名算法对数据进行校验,那么该章的实例将非常合适。
  q 综合应用篇
  这篇不仅细致地介绍了加密技术对数字证书和SSL/TLS协议的应用,而且还以示例的方式讲解了加密解密技术在实际网络中的各种应用,极具实践指导性。请在阅读这篇前仔细阅读实践篇的相关内容。这篇内容将是系统架构师的最爱。
  第10章详细介绍了如何使用KeyTool和OpenSSL两大工具进行数字证书管理,并详细介绍如何在Java中使用数字证书。数字证书是非对称加密算法公钥的载体,是SSL/TLS协议和单向/双向认证服务基础。如果想要构建安全的HTTPS网络服务应用,请先阅读该章内容。
  第11章主要介绍了SSL/TLS协议及单向/双向认证服务。这将是探究单向/双向认证服务技术旅途上的最后一站。该章将详述如何通过简单配置Tomcat服务器快速构建单向/双向认证服务,内容详实、极具实践性。
  第12章是本书的实例集合,通过三套网络应用实例揭示常规网络应用安全、即时通信网络应用安全和以数据交互为主的Web Service应用安全,并通过网络监测工具WireShark对其效果进行检测。通过不同算法的组合,三套实例逐步升级自身系统的安全级别,极具指导意义。该章为解决网络安全问题提供了可行性参考。
  通过阅读本书,读者不仅能全面掌握Java加密与解密的各种基础知识,而且还能进一步了解Java加密与解密的高级技术和技巧,从而将这些知识都运用到实际开发中去。

专家评论

作为一名Java开发者,编写安全的代码比编写优雅的代码更重要,因为安全是一切应用的根本。所有Java开发者都应该全面掌握Java加密与解密的技术,尽可能不让你自己编写的代码给别有用心的人留下可乘之机。如果你是一名Java开发者,强烈建议你阅读并收藏本书,它不仅能作为系统学习Java安全知识之用,还可以作为开发时的参考手册。
    —Java开发者社区
  作为一名架构师,构建系统时首先应该考虑的就是安全问题。如何才能让你构建的系统坚不可摧,没有安全隐患?掌握加密与解密的技术将会让你在进行系统架构时游刃有余。本书可谓是安全领域的权威经典,是所有Java应用架构师的必备参考手册,强烈推荐。
    —架构师社区
  本书是目前Java加密与解密领域最全面、最详尽、最前沿的著作之一,它将带领你领略Java安全之美。
    —Java中文技术网
  密码学是人类最伟大的发明创造之一,是一切安全问题的核心和基础。经过几千年的发展,它在很多行业都发挥着至关重要的作用,尤其是IT领域。本书以通俗的语言,详尽的示例对Java加密与解密的技术进行了详细的阐述,近乎完美。
    —Spring开发者社区
  对于Java企业级应用开发者而言,加密与解密技术是最重要、最关键的技术之一,必须掌握。本书是Java加密与解密领域的百科全书,不仅内容全面、翔实、实践性强,而且不乏深度。
    —51CTO技术博客

上架指导

计算机\程序设计

封底文字

在如今这个信息化时代,数据是一切应用的核心和基础,有数据存在的地方就会有安全隐患,而密码学则是解决所有安全问题的银弹。
Java作为全球最受欢迎的编程语言,它的应用遍及企业级应用的各个领域,安全是所有企业级应用中最突出、重要的问题。然而,这些问题从来就不是一种武器就能解决了的。消息摘要算法用于数据校验、对称加密算法用于数据加密、非对称加密算法用于密钥交换、数字签名算法用于身份验证,等等。若要构建安全、坚固的Java企业级应用,不仅要深入了解每种算法的原理并将它们综合运用,而且还要悟透Java加密与解密技术的本质。
如果你在思考下面这些问题,也许本书就是你想要的!
1. 作为一名系统架构师,如何让你的系统不留有安全隐患?作为一名程序员,如何让你编写的代码没有安全漏洞?
2. 为什么密码学是解决一切安全问题的银弹?密码学究竟是怎样一门学科?近千年来,它经历了怎样的发展历程?它是如何延续至今并逐步发展壮大的?
15.博客、论坛、社区、网络聊天、企业级数据交互应用、网银平台等网络应用都无法逃避网络安全问题,如何在合适的环节选用合适的加密算法,从而提高系统的安全性?
3. Java 6支持哪些加密算法?如何扩充Java 6尚不支持的加密算法?如何增强系统的安全级别?
4. 消息摘要算法和文件校验算法有什么关联?它与普通的循环冗余校验算法有何差别?如何使用消息摘要算法隐蔽敏感信息?
5. 为何Base64算法可以隐蔽敏感信息但却无法真正起到数据加密的作用,而对称加密算法却能轻而易举地起到数据加密的作用?Base 64算法与对称加密算法之间究竟有何关系?
6. Sun并没有提供官方的Base 64算法支持,我们又该如何构建该算法?针对Base64算法,Apache Commons Codec和Bouncy Castle提供了怎样的支持?在其他加密算法中又起到了怎样的作用?
7. 对称加密算法已经几乎完全能胜任所有的加密需求,为何要研制非对称加密算法?对称加密算法究竟有何弊端?非对称加密算法会是对称加密算法的替代者吗?
8. 数字签名是手写签名的数字化产物,其算法与消息摘要算法有何关联?为什么这种算法在结合非对称加密算法密钥后就具备了认证身份的作用?
9. 对称加密算法和非对称加密算法如何分发密钥,数字证书在其中充当了何种角色?数字证书又是如何发放的?
10. 数字证书集多种加密算法于一身,它是如何传递密钥的?又是如何起身份认证作用的?在HTTPS协议中又是如何与SSL/TLS协议相结合构建安全平台的?
11. KeyTool和OpenSSL构建的数字证书究竟有何差别?如何在Java中使用这些工具构建的数字证书?
12. 基于HTTPS协议的网银平台,堪称安全级别最高的网络应用,更是密码学应用领域最为成功的案例。Java 6提供了完备HTTPS协议相关API,如何使用这些API构建固若金汤的HTTPS平台?
13. HTTPS协议和SSL/TLS协议是何关系?这些协议与数字证书、加密算法有何关联?如何使用HTTPS协议构建安全的网络应用?
14. 单向认证服务和双向认证服务两者之间有何不同?它们与HTTPS协议有何关系?如何运用这两种认证服务保护我们的应用?
作者简介

作者简介

梁栋 著:暂无简介

图书目录

前 言
第一部分  基础篇
第1章  企业应用安全 2
1.1  我们身边的安全问题 2
1.2  拿什么来拯救你,我的应用 3
1.2.1  安全技术目标 3
1.2.2  OSI安全体系结构 4
1.2.3  TCP/IP安全体系结构 6
1.3  捍卫企业应用安全的银弹 8
1.3.1  密码学在安全领域中的身影 8
1.3.2  密码学与Java EE 8
1.4  为你的企业应用上把锁 9
1.5  小结 10
第2章  企业应用安全的银弹—密码学 11
2.1  密码学的发家史 11
2.1.1  手工加密阶段 11
2.1.2  机械加密阶段 12
2.1.3  计算机加密阶段 13
2.2  密码学定义、术语及其分类 15
2.2.1  密码学常用术语 15
2.2.2  密码学分类 16
2.3  保密通信模型 17
2.4  古典密码 18
2.5  对称密码体制 19
2.5.1  流密码 20
2.5.2  分组密码 21
2.6  非对称密码体制 26
2.7  散列函数 28
2.8  数字签名 29
2.9  密码学的未来 30
2.9.1  密码算法的破解 31
2.9.2  密码学的明天 31
2.10  小结 32
第3章  Java加密利器 34
3.1  Java与密码学 34
3.1.1  Java安全领域组成部分 34
3.1.2  关于出口的限制 36
3.1.3  本书所使用的软件 36
3.1.4  关于本章内容 37
3.2  java.security包详解 37
3.2.1  Provider 38
3.2.2  Security 41
3.2.3  MessageDigest 43
3.2.4  DigestInputStream 46
3.2.5  DigestOutputStream 47
3.2.6  Key 49
3.2.7  AlgorithmParameters 50
3.2.8  AlgorithmParameter-Generator 52
3.2.9  KeyPair 53
3.2.10  KeyPairGenerator 54
3.2.11  KeyFactory 56
3.2.12  SecureRandom 57
3.2.13  Signature 59
3.2.14  SignedObject 62
3.2.15  Timestamp 63
3.2.16  CodeSigner 64
3.2.17  KeyStore 66
3.3  javax.crypto包详解 70
3.3.1  Mac 70
3.3.2  KeyGenerator 72
3.3.3  KeyAgreement 74
3.3.4  SecretKeyFactory 75
3.3.5  Cipher 77
3.3.6  CipherInputStream 81
3.3.7  CipherOutputStream 83
3.3.8  SealedObject 84
3.4  java.security.spec包和javax.crypto.spec包详解 85
3.4.1  KeySpec和Algorithm-ParameterSpec 85
3.4.2  EncodedKeySpec 86
3.4.3  SecretKeySpec 89
3.4.4  DESKeySpec 90
3.5  java.security.cert包详解 91
3.5.1  Certificate 91
3.5.2  CertificateFactory 92
3.5.3  X509Certificate 94
3.5.4  CRL 95
3.5.5  X509CRLEntry 96
3.5.6  X509CRL 97
3.5.7  CertPath 99
3.6  javax.net.ssl包详解 100
3.6.1  KeyManagerFactory 100
3.6.2  TrustManagerFactory 101
3.6.3  SSLContext 103
3.6.4  HttpsURLConnection 105
3.7  小结 107
第4章  他山之石,可以攻玉 109
4.1  加固你的系统 109
4.1.1  获得权限文件 110
4.1.2  配置权限文件 110
4.1.3  验证配置 111
4.2  加密组件Bouncy Castle 111
4.2.1  获得加密组件 112
4.2.2  扩充算法支持 112
4.2.3  相关API 116
4.3  辅助工具Commons Codec 120
4.3.1  获得辅助工具 120
4.3.2  相关API 121
4.4  小结 131
第二部分  实践篇
第5章  电子邮件传输算法—Base64 134
5.1  Base64算法的由来 134
5.2  Base64算法的定义 134
5.3  Base64算法与加密算法的关系 135
5.4  实现原理 136
5.4.1  ASCII码字符编码 136
5.4.2  非ASCII码字符编码 137
5.5  模型分析 137
5.6  Base64算法实现 138
5.6.1  Bouncy Castle 138
5.6.2  Commons Codec 140
5.6.3  两种实现方式的差异 144
5.6.4  不得不说的问题 144
5.7  Url Base64算法实现 147
5.7.1  Bouncy Castle 147
5.7.2  Commons Codec 149
5.7.3  两种实现方式的差异 150
5.8  应用举例 151
5.8.1  电子邮件传输 151
5.8.2  网络数据传输 151
5.8.3  密钥存储 152
5.8.4  数字证书存储 152
5.9  小结 153
第6章  验证数据完整性—消息摘要算法 155
6.1  消息摘要算法简述 155
6.1.1  消息摘要算法的由来 155
6.1.2  消息摘要算法的家谱 156
6.2  MD算法家族 157
6.2.1  简述 157
6.2.2  模型分析 158
6.2.3  实现 160
6.3  SHA算法家族 167
6.3.1  简述 167
6.3.2  模型分析 168
6.3.3  实现 169
6.4  MAC算法家族 181
6.4.1  简述 181
6.4.2  模型分析 182
6.4.3  实现 182
6.5  其他消息摘要算法 195
6.5.1  简述 195
6.5.2  实现 195
6.6  循环冗余校验算法—CRC算法 206
6.6.1  简述 207
6.6.2  模型分析 207
6.6.3  实现 208
6.7  实例:文件校验 209
6.8  小结 211
第7章  初等数据加密—对称加密算法 213
7.1  对称加密算法简述 213
7.1.1  对称加密算法的由来 213
7.1.2  对称加密算法的家谱 214
7.2  数据加密标准—DES 214
7.2.1  简述 214
7.2.2  模型分析 215
7.2.3  实现 216
7.3  三重DES—DESede 222
7.3.1  简述 222
7.3.2  实现 222
7.4  高级数据加密标准—AES 227
7.4.1  简述 227
7.4.2  实现 228
7.5  国际数据加密标准—IDEA 232
7.5.1  简述 232
7.5.2  实现 232
7.6  基于口令加密—PBE 236
7.6.1  简述 236
7.6.2  模型分析 236
7.6.3  实现 237
7.7  实例:对称加密网络应用 242
7.8  小结 254
第8章  高等数据加密—非对称加密算法 256
8.1  非对称加密算法简述 256
8.1.1  非对称加密算法的由来 256
8.1.2  非对称加密算法的家谱 257
8.2  密钥交换算法—DH 258
8.2.1  简述 258
8.2.2  模型分析 258
8.2.3  实现 260
8.3  典型非对称加密算法—RSA 269
8.3.1  简述 269
8.3.2  模型分析 269
8.3.3  实现 271
8.4  常用非对称加密算法—ElGamal 277
8.4.1  简述 277
8.4.2  模型分析 277
8.4.3  实现 278
8.5  实例:非对称加密网络应用 284
8.6  小结 296
第9章  带密钥的消息摘要算法—数字签名算法 297
9.1  数字签名算法简述 297
9.1.1  数字签名算法的由来 297
9.1.2  数字签名算法的家谱 298
9.2  模型分析 298
9.3  经典数字签名算法—RSA 299
9.3.1  简述 300
9.3.2  实现 300
9.4  数字签名标准算法—DSA 306
9.4.1  简述 306
9.4.2  实现 306
9.5  椭圆曲线数字签名算法—ECDSA 311
9.5.1  简述 311
9.5.2  实现 311
9.6  实例:带有数字签名的加密网络应用 318
9.7  小结 329
第三部分  综合应用篇
第10章  终极武器—数字证书 332
10.1  数字证书详解 332
10.2  模型分析 335
10.2.1  证书签发 335
10.2.2  加密交互 335
10.3  证书管理 337
10.3.1  KeyTool证书管理 337
10.3.2  OpenSSL证书管理 341
10.4  证书使用 351
10.5  应用举例 360
10.6  小结 360
第11章  终极装备—安全协议 362
11.1  安全协议简述 362
11.1.1  HTTPS协议 362
11.1.2  SSL/TLS协议 363
11.2  模型分析 364
11.2.1  协商算法 365
11.2.2  验证证书 365
11.2.3  产生密钥 366
11.2.4  加密交互 368
11.3  单向认证服务 369
11.3.1  准备工作 369
11.3.2  服务验证 374
11.3.3  代码验证 376
11.4  双向认证服务 381
11.4.1  准备工作 381
11.4.2  服务验证 384
11.4.3  代码验证 386
11.5  应用举例 387
11.6  小结 387
第12章  量体裁衣—为应用选择合适的装备 389
12.1  实例:常规Web应用开发安全 389
12.1.1  常规Web应用基本实现 389
12.1.2  安全升级1—摘要处理 394
12.1.3  安全升级2—加盐处理 396
12.2  实例:IM应用开发安全 399
12.2.1  IM应用开发基本实现 399
12.2.2  安全升级1—隐藏数据 412
12.2.3  安全升级2—加密数据 415
12.3  实例:Web Service应用开发安全 420
12.3.1  Web Service应用基本实现 420
12.3.2  安全升级1—单向认证服务 427
12.3.3  安全升级2—双向认证服务 438
12.4  小结 443
附录A  Java 6支持的算法 445
附录B  Bouncy Castle支持的算法 447

教学资源推荐
作者: (美) 托马斯 W. 米勒(Thomas W. Miller )著
作者: [印] 佩瑟鲁·拉吉(Pethuru Raj) 阿诺帕马·拉曼(Anupama Raman) 德维亚·纳加拉杰(Dhivya Nagaraj) 悉达多·杜格拉拉 (Siddhartha Duggirala) 著
作者: 郭春宁
作者: [澳]杰夫瑞·艾文(Jeffrey Aven) 著