《Java加密与解密的艺术》即将上市!

不曾想,我的博客 《Java加密技术》系列会得到广大博友的如此青睐;更不曾想,我居然有机会能与出版社合作,将该博客系列内容整理,并进一步引申,系统而全面地讲解了Java企业级应用安全方面的知识,最终编辑成册,整理成书——《Java加密与解密的艺术》! 这要感谢机械工业出版社华章分社杨福川兄弟的一双慧眼,让我有机会将自己的经验所得与同行们一起分享! 《Java加密与解密的艺术》即将上市,令我喜出望外!

为什么要整理Java加密技术?
Java语言很多人都知道,近年来一直位于计算机编程语言排名榜首,但通过Java进行加密解密,对数据有效保护的事情未必有很多人知道!恰逢08年参与网银平台搭建,Web Service系统构建,我不得不考虑种种安全问题。一研究不要紧,真的有点钻进去拔不出来! Java在安全方面的相关实现非常成熟,完全出乎我的意料!项目完成之后,我便开始研究密码学在Java中的相关实现。我有一个习惯:每年树立一些技术课题,每年总结自己的技术所得,加密算法正是我08~09年的主要研究课题。在网上泡了几个月之后发现:Java相关加密算法实现是少之又少,实用性也很差! 索性,做第一个吃螃蟹的人——把所有Java支持的加密算法整理到博客中,与大家分享!

整理过程
在博客整理一开始,我仅仅是想对当前Java所支持的算法进行逐一整理。但真正开始写的时候,我确实刹不住了! 由于JavaEye当时的限制,一天只能发表一篇博客文章,我也就一天整理一篇相关算法。当时真有身后一群人追着看期刊的感觉! 这迫使我马不停蹄的继续整理。整理过程中也遇到一些技术难点,相关资料也很奇缺,于是断断续续,最终整理出了十篇《Java加密技术》系列博客!

书稿历时半年
写书与写博客不同。如今,我深刻体会到了! 博客,随性而发,只要把关键点给博友们说明白即可。写书,则要对读者朋友负责,一个技术点的来龙去脉都要介绍清楚,细致到每一行代码,每一个标点。这对于我是一个极大的挑战! 历时半年有余,这让我的精力时常处于完全透支的状态! 这是我2009年最大的精神收获!

本书亮点
中国人喜欢追根溯源,我也不例外。一开始只是对密码学做了一个概括性的整理,真正整理后才发现:密码学的历史竟然有上千年! 作为四大文明古国之一的中国,早在武王伐纣时期就有密码学应用于军事的先例。我国是在军事方面应用密码学较早的国家之一!喜欢研究历史的朋友可以一饱眼福!
当前Java 6涵盖了现代密码学的各个算法分类: 消息摘要算法对称加密算法非对称加密算法数字签名算法等。作为一种补充,Apache的 Commons Codec提供简便的消息摘要算法实现。而作为一种扩充,对于Java 6尚且不支持的算法提供了相应的解决办法, Bouncy Castle提供相关实现,使得在基于Java语言的开发平台下顺利获得MD4、IDEA、ElGamal、ECDSA等仅有 Bouncy Castle才支持的、并且是常用的加密算法支持! 对于上述这些内容,可能Java安全方面相关的朋友都比较了解,但却很少有书能够对其内容做逐一介绍。
也许加密算法算不上什么,脱离了实际应用,尚且仅仅是一种理论! 但当我使用 数字证书构建 SSL/TLS协议,搭建 HTTPS平台的时候,就变成了一种无形的武器! 通过 KeyToolOpenSSL构建数字证书,配置Tomcat实现 单向认证双向认证,这一切对于你将不再陌生。
如何校验文件的一致性?如何将数据隐藏?如何保护你的交互数据?如何避免Web Service被不信任方使用?如何保护你的企业应用?这一系列问题的答案,尽在本书当中,敬请关注!

目录赏析
引用

《JAVA加密与解密的艺术》目录
前言
为什么要写这本书
本书面向的读者
如何阅读本书
致谢
第一部分 基础篇
第1章 企业应用安全
1.1 我们身边的安全问题
1.2 拿什么来拯救你,我的应用
1.2.1安全技术目标
1.2.2 OSI安全体系结构
1.2.3 TCP/IP安全体系结构
1.3 捍卫企业应用安全的银弹
1.3.1 密码学在安全领域中的身影
1.3.2 密码学与Java EE
1.4 为你的企业应用上把锁
1.5 小结
第2章 企业应用安全的银弹——密码学
2.1密码学的发家史
2.1.1 手工加密阶段
2.1.2 机械加密阶段
1. 第一次世界大战
2. 第二次世界大战
2.1.3 计算机加密阶段
2.2 密码学定义、术语及其分类
2.2.1 密码学常用术语
2.2.2 密码学分类
1. 按时间划分
2. 按保密内容的算法划分
3. 按密码体制划分
4. 按明文的处理方法划分
2.3 保密通信模型
2.4 古典密码
2.5 对称密码体制
2.5.1 流密码
1. 同步流密码
2. 自同步流密码
2.5.2 分组密码
1. 分组密码设计原则
2. 分组密码工作模式
2.6 非对称密码体制
2.7 散列函数
2.8 数字签名
2.9 密码学的未来
2.9.1 密码算法的破解
2.9.2 密码学的明天
2.10 小结
第3章 Java加密利器
3.1 Java与密码学
3.1.1 Java安全领域组成部分
3.1.2 关于出口限制
3.1.3 本书所使用的软件
1. 关于Java软件包
2. 关于Java开发工具Eclipse 软件包
3. 关于测试工具JUnit软件包
4. 关于第三方开源组件包
5. 关于网络监听工具WireShark
3.1.4 关于本章内容
3.2 java.security包详解
3.2.1 Provider
3.2.2 Security
3.2.3 MessageDigest
3.2.4 DigestInputStream
3.2.5 DigestOutputStream
3.2.6 Key
1. SecretKey
2. PublicKey和PrivateKey
3.2.7 AlgorithmParameters
3.2.8 AlgorithmParameterGenerator
3.2.9 KeyPair
3.2.10 KeyPairGenerator
3.2.11 KeyFactory
3.2.12 SecureRandom
3.2.13 Signature
3.2.14 SignedObject
3.2.15 Timestamp
3.2.16 CodeSigner
3.2.17 KeyStore
3.3 javax.crypto包详解
3.3.1 Mac
3.3.2 KeyGenerator
3.3.3 KeyAgreement
3.3.4 SecretKeyFactory
3.3.5 Cipher
3.3.6 CipherInputStream
3.3.7 CipherOutputStream
3.3.8 SealedObject
3.4 java.security.spec包和javax.crypto.spec包详解
3.4.1 KeySpec和AlgorithmParameterSpec
1. KeySpec
2. AlgorithmParameterSpec
3.4.2 EncodedKeySpec
1. X509EncodedKeySpec
2. PKCS8EncodedKeySpec
3.4.3 SecretKeySpec
3.4.4 DESKeySpec
3.5 java.security.cert包详解
3.5.1 Certificate
3.5.2 CertificateFactory
3.5.3 X509Certificate
3.5.4 CRL
3.5.5 X509CRLEntry
3.5.6 X509CRL
3.5.7 CertPath
3.6 javax.net.ssl包详解
3.6.1 KeyManagerFactory
3.6.2 TrustManagerFactory
3.6.3 SSLContext
3.6.4 HttpsURLConnection
3.7小结
第4章 他山之石可以攻玉
4.1 加固你的系统
4.1.1 获得权限文件
4.1.2 配置权限文件
4.1.3 验证配置
4.2 加密组件Bouncy Castle
4.2.1 获得加密组件
4.2.2 扩充算法支持
1. 配置方式
2. 调用方式
3. 两种方式对比
4.2.3 相关API
1. Base64
2. UrlBase64
3. Hex
4.3 辅助工具Commons Codec
4.3.1 获得辅助工具
4.3.2 相关API
1. Base64
2. Base64InputStream
3. Base64OutputStream
4. Hex
5. DigestUtils
4.4 小结
第二部分 实践篇
第5章 电子邮件传输算法——Base64
5.1 Base64算法的由来
5.2 Base64算法的定义
5.3 Base64算法与加密算法的关系
5.4 实现原理
5.4.1 ASCII码字符编码
5.4.2非ASCII码字符编码
5.5 模型分析
5.6 Base64算法实现
5.6.1 Bouncy Castle
5.6.2 Commons Codec
5.6.3 两种实现方式差异
5.6.4 不得不说的问题
1. Base64算法的非标准实现
2. 非标准实现的问题
5.7 Url Base64算法实现
5.7.1 Bouncy Castle
5.7.2 Commons Codec
5.7.3 两种实现方式差异
5.8应用举例
5.8.1 电子邮件传输
5.8.2 网络数据传输
5.8.3 密钥存储
5.8.4 数字证书存储
5.9 小结
第6章 验证数据完整性——消息摘要算法
6.1 消息摘要算法简述
6.1.1 消息摘要算法的由来
6.1.2 消息摘要算法的家谱
6.2 MD算法家族
6.2.1 简述
6.2.3 模型分析
6.2.3 实现
1. Sun
2. Bouncy Castle
3. Commons Codec
4. 三种实现方式的差异
6.3 SHA算法家族
6.3.1简述
6.3.2 模型分析
6.3.3 实现
1. Sun
2. Bouncy Castle
3. Commons Codec
4. 三种实现方式的差异
6.4 MAC算法家族
6.4.1简述
6.4.2 模型分析
6.4.3 实现
1. Sun
2. Bouncy Castle
3. 两种实现方式的差异
6.5 其它消息摘要算法
6.5.1 简述
6.5.1 实现
1. RipeMD系列算法
2. HmacRipeMD系列算法
6.6 循环冗余校验算法——CRC算法
6.6.1简述
6.6.2 模型分析
6.6.3 实现
6.7 实例:文件校验
6.9 小结
第7章 初等数据加密——对称加密算法
7.1对称加密算法简述
7.1.1 对称加密算法的由来
7.1.2 对称加密算法的家谱
7.2 数据加密标准——DES
7.2.1 简述
7.2.2 模型分析
7.2.3 实现
7.3 三重DES——DESede
7.3.1 简述
7.3.2 实现
7.4 高级数据加密标准——AES
7.4.1 简述
7.4.2 实现
7.5 国际数据加密标准——IDEA
7.5.1 简述
7.5.2 实现
7.6 基于口令加密——PBE
7.6.1 简述
7.6.2 模型分析
7.6.3 实现
7.7 实例:对称加密网络应用
7.8小结
第8章 高等数据加密——非对称加密算法
8.1 非对称加密算法简述
8.1.1 非对称加密算法的由来
8.1.2 非对称加密算法的家谱
8.2密钥交换算法——DH
8.2.1 简述
8.2.2 模型分析
8.2.3 实现
8.3 典型非对称加密算法——RSA
8.3.1 简述
8.3.2 模型分析
8.3.3 实现
8.4常用非对称加密算法——ElGamal
8.4.1 简述
8.4.2 模型分析
8.4.3 实现
8.5 实例:非对称加密网络应用
8.6 小结
第9章 带密钥的消息摘要算法——数字签名算法
9.1 数字签名算法简述
9.1.1数字签名算法的由来
9.1.2数字签名算法的家谱
9.2 模型分析
9.3 经典数字签名算法——RSA
9.3.1 简述
9.3.2 实现
9.4 数字签名标准算法——DSA
9.4.1 简述
9.4.2实现
9.5 椭圆曲线数字签名算法——ECDSA
9.5.1 简述
9.5.2实现
9.6 实例:带有数字签名的加密网络应用
9.7 小结
第三部分 综合应用篇
第10章 终极武器——数字证书
10.1 数字证书详解
10.2 模型分析
10.2.1证书签发
10.2.2加密交互
10.3 证书管理
10.3.1 Keytool证书管理
1. 构建自签名证书
2. 构建CA签发证书
10.3.2 OpenSSL证书管理
1. 准备工作
2. 构建根证书
3. 构建服务器证书
4. 构建客户证书
10.4 证书使用
10.5 应用举例
10.6 小结
第11章 终极装备——安全协议
11.1 安全协议简述
11.1.1 HTTPS协议
11.1.2 SSL/TLS协议
11.2 模型分析
11.2.1 协商算法
11.2.2 验证证书
11.2.3 产生密钥
11.2.4 加密交互
11.3单向认证服务
11.3.1 准备工作
1. 域名绑定
2. 证书导入
3. 服务器配置
11.3.2 服务验证
11.3.3 代码验证
11.4 双向认证服务
11.4.1 准备工作
1. 证书导入
2. 服务器配置
11.4.2 服务验证
11.4.3 代码验证
11.5 应用举例
11.6小结
第12章 量体裁衣——为应用选择合适的装备
12.1 实例:常规Web应用开发安全
12.1.1 常规Web应用基本实现
1. 准备工作
2. 构建数据库
3. 构建应用
4. 验证服务
12.1.2 安全升级1——摘要处理
1. 修改用户数据
2. 修改校验模块
12.1.2 安全升级2——加盐处理
1. 修改用户数据
2. 修改校验模块
12.2 实例:IM应用开发安全
12.2.1 IM应用基本实现
1. 构建应用
2. 验证服务
3. 网络检测
12.2.2 安全升级1——隐藏数据
1. 增强安全性
2. 网络检测
12.2.3 安全升级2——加密数据
1. 增强安全性
2. 网络检测
12.3 实例:Web Service应用开发安全
12.3.1 Web Service应用基本实现
1. 准备工作
2. 验证服务
3. 网络监测
12.3.2 安全升级1——单向认证服务
1. 构建证书
2. 配置Tomcat
3. 验证服务
4. 网络监测
12.3.3 安全升级2——双向认证服务
1. 构建证书
2. 配置Tomcat
3. 验证服务
4. 网络监测
12.4 小结
附录
附录A  Java 6支持的算法
附录B  Bouncy Castle支持的算法


目前,《Java加密与解密的艺术》已经完稿,很快就能与博友们见面了!

你可能感兴趣的:(java,算法,应用服务器,网络应用,企业应用)