《Java安全性编程实例》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:徐迎晓编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2003
  • ISBN:7302064202
  • 页数:469 页
图书介绍:本书以大量精简的实例介绍了Java安全性编程方面的概念和技术。

第1章 准备上手 1

1.1J2SE的安装和设置 2

1.1.1下载J2SE 2

1.1.2安装J2SE 2

1.1.3设置J2SE 3

1.1.4J2SE的主要工具 4

1.2反编译器的安装 6

1.2.1JAD反编译工具 6

1.2.2CAVAJ反编译工具 8

1.2.3小颖Java源代码反编译工具 8

1.3混淆器的安装 9

1.3.1MarvinObfuscator混淆器 9

1.3.2JADE混淆器 10

第2章 数据内容的保护——加密和解密 13

2.1一个简单的加密和解密程序——凯撒密码 14

2.2对称密钥的生成和保存 16

2.2.1对称密钥的生成及以对象序列化方式保存 16

2.2.2以字节保存对称密钥 18

2.3使用对称密钥进行加密和解密 20

2.3.1使用对称密钥进行加密 20

2.3.2使用对称密钥进行解密 22

2.4基于口令的加密和解密 25

2.4.1基于口令的加密 25

2.4.2基于口令的解密 28

2.5针对流的加密和解密 30

2.5.1针对输入流的加密和解密 30

2.5.2针对输出流的加密和解密 33

2.6加密方式的设定 35

2.6.1使用CBC方式的加密 36

2.6.2使用CBC方式的解密 38

2.7生成非对称加密的公钥和私钥 40

2.8使用RSA算法进行加密和解密 42

2.8.1使用RSA公钥进行加密 42

2.8.2使用RSA私钥进行解密 45

2.9使用密钥协定创建共享密钥 48

2.9.1创建DH公钥和私钥 48

2.9.2创建共享密钥 51

2.10小结 54

第3章 Java源代码和类、变量及方法的保护 55

3.1Java反编译及混淆器的使用 56

3.2从网络资源加载节码文件 61

3.3以任意方式加载字节码文件 65

3.4加载加密的字节码文件 68

3.5加载当前目录下的加密字节码文件 71

3.6Java类、成员变量和方法的保护 74

3.6.1类的保护 74

3.6.2成员变量和方法的保护 79

3.6.3使用校验器 81

3.6.4Reference类型私有成员变量的保护 83

3.6.5保护常量 86

3.7小结 88

第4章 数据完整性和所有者的确认——消息摘要和签名 89

4.1使用消息摘要验证数据未被篡改 90

4.1.1计算消息摘要 90

4.1.2基于输入流的消息摘要 92

4.1.3输入流中指定内容的消息摘要 94

4.1.4基于输入流的消息摘要 96

4.2使用消息验证码 99

4.3使用数字签名确定数据的来源 101

4.3.1使用私钥进行数字签名 102

4.3.2使用公钥验证数字签名 104

4.4使用消息摘要保存口令 107

4.4.1使用消息摘要保存口令 108

4.4.2使用消息摘要验证口令 110

4.4.3攻击消息摘要保存的口令 112

4.4.4使用加盐技术防范字典式攻击 115

4.4.5验证加盐的口令 119

4.5小结 122

第5章 数字化身份的确定——数字证书 123

5.1数字证书的创建 124

5.1.1使用默认的密钥库和算法创建数字证书 124

5.1.2使用别名 126

5.1.3使用指定的算法和密钥库和有效期 127

5.1.4使用非交互模式 128

5.2数字证书的显示 129

5.2.1使用Keytool直接从密钥库显示条目信息 129

5.2.2使用Keytool直接从密钥库显示证书详细信息 130

5.2.3使用Keytool将数字证书导出到文件 131

5.2.4使用Keytool从文件中显示证书 132

5.2.5在Windows中从文件显示证书 133

5.2.6Java程序从证书文件读取证书 134

5.2.7Java程序从密钥库直接读取证书 137

5.2.8Java程序显示证书指定信息(全名/公钥/签名等) 139

5.3密钥库的维护 143

5.3.1使用Keytool删除指定条目 143

5.3.2使用Keytool修改指定条目的口令 144

5.3.3Java程序列出密钥库所有条目 144

5.3.4Java程序修改密钥库口令 146

5.3.5Java程序修改密钥库条目的口令及添加条目 148

5.3.6Java程序检验别名及删除条目 150

5.4数字证书的签发 152

5.4.1确定CA的权威性——安装CA的证书 152

5.4.2验证CA的权威性——显示CA的证书 155

5.4.3Java程序签发数字证书 156

5.4.4数字证书签名后的发布 163

5.5数字证书的检验 164

5.5.1Java程序验证数字证书的有效期 164

5.5.2使用Windows查看证书路径验证证书的签名 167

5.5.3从Windows中卸载证书 168

5.5.4Java程序使用CA公钥验证已签名的证书 170

5.6小结 174

第6章 数字化身份——CertPath证书链 175

6.1密钥库中创建并保存证书链的几种方法 176

6.1.1使用Keytool将已签名的数字证书导入密钥库 176

6.1.2使用Java程序将已签名的数字证书导入密钥库 179

6.2几种获取CertPath证书链的方法 183

6.2.1根据证书文件生成CertPath类型的对象 183

6.2.2从密钥库读取证书链生成CertPath类型的对象 186

6.2.3从HTTPS服务器获取证书链 188

6.3CertPath对象的证书显示和保存 196

6.3.1显示CertPath中的证书 196

6.3.2保存CertPath中的证书 198

6.4验证CertPath证书链 201

6.4.1验证主体和签发者 201

6.4.2验证签名 204

6.4.3CertPathValidator类基于TrustAnchor验证证书链 207

6.4.4CertPathValidator类基于密钥库验证证书链 211

6.5使用CertStore对象保存和提取证书 215

6.5.1创建CertStore对象 215

6.5.2定义证书的选择标准 220

6.5.3从CertStore中提取证书 224

6.6证书的吊销 226

6.6.1查看证书吊销清单常规信息 226

6.6.2查看清单中被吊销的证书 230

6.6.3从CertStore对象中提取已吊销的证书 233

6.7小结 237

第7章 数据的安全传输和身份验证——SSL和HTTPS编程 238

7.1最简单的SSL通信 239

7.1.1最简单的SSL服务器 239

7.1.2最简单的SSL客户程序 241

7.1.3进一步设置信任关系 244

7.1.4设置默认信任密钥库 245

7.1.5通过KeyStore对象选择密钥库 248

7.2扩展的SSL客户和服务器程序的例子 251

7.2.1设计通信规则 251

7.2.2查看对方的证书等连接信息 257

7.3HTTPS客户及服务器程序 262

7.3.1最简单的HTTPS服务器程序 262

7.3.2最简单的HTTPS客户程序 269

7.3.3基于Socket的HTTPS客户程序 272

7.3.4传输实际文件 274

7.4基于证书的客户身份验证 279

7.4.1最简单的验证客户身份的HTTPS服务器程序 279

7.4.2编写客户程序连结需客户验证的HTTPS服务器 282

7.5小结 283

第8章 程序运行的安全性——基于代码来源的授权 284

8.1安全管理器的使用 285

8.1.1使用默认的安全管理器限制应用程序 285

8.1.2编写自己的安全管理器 288

8.1.3在程序中设置安全管理器 291

8.2使用策略文件基于代码位置进行授权 292

8.2.1允许所有代码具有所有权限 293

8.2.2允许所有代码具有特定的权限 296

8.2.3允许所有代码具有多种不同权限 298

8.2.4针对指定目录中的代码的授权 300

8.2.5针对从网络下载的代码的授权 304

8.3使用策略文件基于代码的所有者进行授权 309

8.3.1编程者对代码进行签名 309

8.3.2用户检验已签名的代码 310

8.3.3针对签名者进行授权 313

8.4定义特权代码 315

8.4.1不同代码之间的调用和授权 316

8.4.2使用doPrivileged()方法定义特权代码 321

8.4.3使用匿名类定义特权代码 326

8.5权限的操作及定义自己的权限 331

8.5.1策略文件权限的检测 331

8.5.2最简单的权限定义 336

8.5.3使用签名的权限 340

8.6Applet的安全运行 342

8.6.1使用AppletViewer运行的JavaApplet 343

8.6.2浏览器中使用JavaPlug-in运行JavaApplet 346

8.6.3浏览器基于策略文件运行JavaApplet 351

8.6.4浏览器运行RSA签名的JavaApplet 353

8.6.5JavaPlug-in的证书管理 358

8.6.6使用usePolicy权限加强RSA签名Applet的安全控制 359

8.7小结 361

第9章 程序运行的安全性——基于用户身份的验证和授仅(JAAS) 362

9.1最简单的身份验证 363

9.1.1最简单的登录 363

9.1.2更换登录模块修改验证方式 366

9.1.3更换回调处理器修改登录界面 369

9.1.4使用非交互式验证 371

9.2编写自己的登录模块 374

9.2.1简单的登录模块 374

9.2.2完整的登录模块模板 383

9.2.3使用模板编写自己的密钥库登录模块 392

9.3使用堆叠式登录 402

9.3.1堆叠式登录及各个登录模块的相互关系 402

9.3.2堆叠登录模块之间的信息共享 406

9.4编写自己的回调处理器 424

9.4.1最简单的回调处理器 424

9.4.2图形界面口令输入的安全性 430

9.4.3文本界面口令输入的安全性 433

9.4.4更加安全的文本界面口令输入方式 435

9.5基于身份的授权 438

9.5.1使用策略文件的基于身份授权 438

9.5.2使用编程方式的基于身份授权 445

9.5.3比较doAsPrivileged()和doAs() 450

9.6小结 456

附录A申请数字标识(数字证书) 457

附录B向CA申请证书签名 464