本书介绍了如何用Java的加密技术提高数据的安全性。重点介绍了存储、消息完整性和身份验证密码学。全书包括7章:第1—4章介绍了密码学的基础知识,第5章介绍了Java密码API,第6章介绍了短消息的编码和加密,第7章是前面6章内容和实际应用。
本书的特点是用简单实用的示例程序来阐述理论问题和实现方法,并为数据库和Web应用程序的安全提供了详细的Java语言实现指南和代码示例。全书内容翔实、清晰、概念性强、论述深入浅出,适合于从事密码系统研究的软件工程师阅读,也可作为大专院校相关专业的教学参考书。
\r\n
前言 \r\n\r\n 绪论 \r\n\r\n 第1章 位和字节 \r\n\r\n 1. 1 一般运算 \r\n\r\n 1. 1. 1 数的基数 \r\n\r\n 1. 1. 2 位和字节 \r\n\r\n 1. 1. 3 有符号字节 \r\n\r\n 1. 1. 4 位运算符 \r\n\r\n 1. 1. 5 字群压缩 \r\n\r\n 1. 1. 6 整数和结尾表示法 \r\n\r\n 1. 2 Java数值 \r\n\r\n 1. 2. l 基本类型 \r\n\r\n 1. 2. 3 使用字节 \r\n\r\n 1. 2. 4 BigInteger \r\n\r\n 第2章 保密密钥 \r\n\r\n 2. 1 对称分组密码 \r\n\r\n 2. 1. 1 密码特性 \r\n\r\n 2. 1. 2 常用的分组密码 \r\n\r\n 2. 1. 3 不应使用的密码 \r\n\r\n 2. 1. 4 填充 \r\n\r\n 2. 1. 5 运算模式 \r\n\r\n 2. 1. 6 电子密码本模式(ECB) \r\n\r\n 2. 1. 7 密码分组链接模式(CBC) \r\n\r\n 2. 1. 8 密钥包装 \r\n\r\n 2. 1. 9 把密码转变成密钥 \r\n\r\n 2. 2 散列 \r\n\r\n 2. 2. 1 密码散列 \r\n\r\n 2. 2. 2 运算法则 \r\n\r\n 2. 2. 3 散列函数标准和实践 \r\n\r\n 2. 3 散列式信息鉴定代码(HMAC) \r\n\r\n 2. 3. 1 标准 HMAC \r\n\r\n 2. 3. 2 HMAC标准和实践 \r\n\r\n 2. 4 小结 \r\n\r\n 第3章 公开密钥 \r\n\r\n 3. 1 公开密钥密码 \r\n\r\n 3. 1. 1 其他系统 \r\n\r\n 3. 2 公开密钥安全性分类 \r\n\r\n 3. 3 数学基础 \r\n\r\n 3. 3. 1 素数 \r\n\r\n 3. 3. 2 初等数值理论 \r\n\r\n 3. 4 公开密钥加密和主要PKCS分类 \r\n\r\n 3. 4. 1 RSA和整数因子分解 \r\n\r\n 3. 4. 2 离散对数系统 \r\n\r\n 3. 4. 3 椭圆曲线 \r\n\r\n 3. 4. 4 其他公开密钥密码系统 \r\n\r\n 3. 5 小结 \r\n\r\n 第4章 随机数 \r\n\r\n 4. 1 随机和安全性 \r\n\r\n 4. 1. 1 随机性实验 \r\n\r\n 4. 2 伪随机数发生器 \r\n\r\n 4. 2. 1 密码系统PRNG \r\n\r\n 4. 2. 2 流密码 \r\n\r\n 4. 3 使用随机性 \r\n\r\n 4. 3. 1 游戏随机数的生成 \r\n\r\n 4. 3. 2 生成某个范围内的随机数 \r\n\r\n 4. 3. 3 洗牌 \r\n\r\n 4. 3. 4 生成随机排列 \r\n\r\n 4. 3. 5 随机取样 \r\n\r\n 4. 4 访问熵 \r\n\r\n 4. 4. 1 操作系统服务 \r\n\r\n 4. 4. 2 “用户方”服务 \r\n\r\n 4. 4. 3 TrueRand库 \r\n\r\n 4. 4. 4 远程服务 \r\n\r\n 4. 5 Java和随机数 \r\n\r\n 4. 5. 1 类Random和 SecureRandom \r\n\r\n 4. 5. 2 开发者问题 \r\n\r\n 4. 5. 3 重新设置种子 \r\n\r\n 4. 5. 4 收集熵 \r\n\r\n 第5章 Java密码学 \r\n\r\n 5. 1 组织方式 \r\n\r\n 5. 1. 1 提供者和引擎类 \r\n\r\n 5. 1. 2 参数. 密钥和证书 \r\n\r\n 5. 1. 3 错误处理 \r\n\r\n 5. 2 提供者 \r\n\r\n 5. 2. 1 标准名称 \r\n\r\n 5. 2. 2 标准Sun和SunJCE提供者 \r\n\r\n 5. 2. 3 其他提供者 \r\n\r\n 5. 2. 4 初始化提供者 \r\n\r\n 5. 2. 5 编写自己的提供者 \r\n\r\n 5. 3 核心引擎类 \r\n\r\n 5. 3. 1 MessageDigest \r\n\r\n 5. 3. 2 MAC \r\n\r\n 5. 3. 3 SecureRandom \r\n\r\n 5. 3. 4 Cipher \r\n\r\n 5. 3. 5 Signature \r\n\r\n 5. 3. 6 密钥一致协议 \r\n\r\n 5. 4 参数. 密钥和证书 \r\n\r\n 5. 4. 1 算法参数 \r\n\r\n 5. 4. 2 密钥 \r\n\r\n 5. 5 小结 \r\n\r\n 第6章 短消息编码和加密 \r\n\r\n 6. 1 预处理 \r\n\r\n 6. 1. 1 把数字转换成字节 \r\n\r\n 6. 1. 2 把7位数据压缩成8位 \r\n\r\n 6. 1. 3 通用压缩和java. util. zip.Deflater \r\n\r\n 6. 1. 4 添加奇偶校验位 \r\n\r\n 6. 2 短消息加密 \r\n\r\n 6. 2. 1 单分组加密 \r\n\r\n 6. 3 短消息编码 \r\n\r\n 6. 3. 1 对客户所用数据编码 \r\n\r\n 6. 3. 2 机器和客户可见的应用程序的编码 \r\n\r\n 第7章 应用程序和数据框架 \r\n\r\n 7. 1 加密数据的数据库框架 \r\n\r\n 7. 1. 1 选择密码 \r\n\r\n 7. 1. 2 数据 \r\n\r\n 7. 1. 3 查找. 索引和约束 \r\n\r\n 7. 1. 4 不对称数据的使用 \r\n\r\n 7. 1. 5 空值和数据库应用程序 \r\n\r\n 7. 2 Java中的安全内存管理 \r\n\r\n 7. 2. l 灵巧的数组类 \r\n\r\n 7. 2. 2 字符数组 \r\n\r\n 7. 2. 3 使用类SecureRandom \r\n\r\n 7. 3 保密密钥管理 \r\n\r\n 7. 3. 1 保密密钥数据 \r\n\r\n 7. 3. 2 密钥的生产 \r\n\r\n 7. 3. 3 对密钥的加密 \r\n\r\n 7. 3. 4 存储 \r\n\r\n 7. 3. 5 密钥访问和分发 \r\n\r\n 7. 3. 6 通过Cipher. MAC使用密钥 \r\n\r\n 7. 4 口令 \r\n\r\n 7. 4. 1 启动口令 \r\n\r\n 7. 4. 2 成员名和口令 \r\n\r\n 7. 5 日志 \r\n\r\n 7. 5. 1 嵌入式加密日志 \r\n\r\n 7. 5. 2 完全加密的日志文件 \r\n\r\n 7. 5. 3 公开密钥日志文件 \r\n\r\n 7. 5. 4 拆分日志文件 \r\n\r\n 7. 5. 5 基于网络的日志 \r\n\r\n 7. 6 密钥记号和应用程序 \r\n\r\n 7. 6. 1 记号设计 \r\n\r\n 7. 6. 2 URL记号 \r\n\r\n 7. 6. 3 Cookie记号 \r\n\r\n 7. 6. 4 访问控制记号 \r\n\r\n 7. 7 小数值和货币值的计算 \r\n\r\n 7. 7. 1 双精度值和浮点值 \r\n\r\n 7. 7. 2 BigDecimal \r\n\r\n 附录A Java密码类参考 \r\n\r\n \r\n\r\n \r\n
\r\n
Java从版本1. 1开始引人加密体系结构(JCA), 它是访问和开发Java平台密码功能的框架, 其中包括数字签名和消息摘要API. 版本1. 2对该结构进行了较大的扩展. Java密码 扩展(JCE)是一组包, 提供了加密框架及其实现. 密钥生成和消息认证码(MAC)的算 法, 现已成为Java SDK1. 4的核心组成部分.
本书介绍了如何用Java的加密方法提高数据的安全性, 重点介绍了存储. 消息完整性和身份验证密码学. 作者Nick Galbreach是一位著名的安全问题专家, 曾长期从事敏感信息存储和转换的加密策略研究, 相信对欲了解Java密码API的读者会有所帮助.
与纯粹的密码学书籍不同, 本书用简明实用的示例代码来阐述理论问题和具体的实现方法, 并为数据库和Web应用程序的安全提供了详细的Java语言实现指南和代码示例. 全书包括7章. 第1章介绍了基本的数值理论, 这一章是理解全书内容的基础. 第2章和第3章介绍了公开密钥和保密密钥密码学标准. 第4章所介绍的随机数和随机数发生器是密码学的核心. 第5章介绍了Java密码API, 密码包中的类按字母顺序(而不是包顺序)列在了 附录A中. 第6章介绍了短消息的编码和加密, 这对数据库的查找和索引很有意义. 第7章是前面几章内容的实际运用, 介绍了如何在应用程序中使用和实现数据编码和加密, 内容包括应用程序和数据库设计. 口令和记号的使用. 密钥管理和日志等等.
本书主要由曾振宇. 白克壮. 尹 . 纪宁. 梅开. 文达. 杨开开. 成文. 颜先杰. 任映梅翻译, 参与翻译的还有苏泳民. 单力. 汪梓鸣. 魏莲方. 戚叶等, 梁敏. 史荣光. 李听怡对本书进行了全面的审校. 不当和疏漏之处敬请广大读者批评指正.
此书是专为那些接触过一点或没接触过密码学的软件工程师编写的. 在此, 作者尽量避免写成一本密码式的天书. 这类书皆容易陷人两种误区:百科全书式 的和记述式的或者纯粹是API式的描述. 作者的目的是通过对密码学的整体介绍, 试图在两者之间架起桥梁, 同时提供应用实例和用法来达到这一目的. 另外, 许 多书都只是大量地关注公开密钥技术, 而以作者的经验, 公开密钥密码系统最常用的是第三方应用程序(虚拟专用网. 电子邮件)或现行的协议(如SSL和SSH).
虽然在C和C++语言中有许多优秀的密码库, 然而Java扮演着参考书目的角 色, 因为:
在新型商务和服务器应用程序中非常流行.
自动管理内存, 消除了各种类型的错误(堆栈破碎和缓冲区溢出).
它提供了标准密码API, 虽然不完美, 但这是我们能够得到的“通用”API.
Java密码API分散在几个包中. 附录A按字母顺序列出了这些类, 而不是像 通常的做法那样接包列出这些类. 作者发现这比在不同的包间翻来翻去有用多了. 作者试图对示例源代码加以限制, 使它相对简单或能说明要点或本身就是实用程 序. 更复杂(也可能更有用)的示例没有被采用, 这是因为对一个安全应用程序
来说, 错误和异常处理是相当烦琐的, 并且实际上没有增加多少价值. 作者一直 不喜欢将CD-ROM中的内容大量写进书中, 同样, 也从没发现源代码章节对说明 问题特别有用. 相关的Web站点(www.wiley. com/compbooks. galbreath)提供了全 部的源代码和更多的示例.
由于时间和篇幅的限制, 许多主题不能讨论. 特别是:
XML密钥管理. 加密和签名模式.
秘密项目, 包括秘密“密封”. Gramm-Leech-Biley 1999法案和HIPPA保密条例.
具有更多细节性的数据库技巧和技术.
希望在后续版本的书中会详细论述这些主题.
无封面