前言
第一部分 基礎篇
第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 非對稱密碼體製 27
2.7 散列函數 28
2.8 數字簽名 29
2.9 公鑰基礎設施 31
2.9.1 PKI的標準 31
2.9.2 PKI係統的組成 32
2.9.3 數字證書 33
2.10 PGP、OpenPGP與GPG 34
2.11 密碼學的未來 34
2.11.1 密碼算法的破解 35
2.11.2 密碼學的明天 36
2.12 小結 36
第3章 Java加密利器 38
3.1 Java與密碼學 38
3.1.1 Java安全領域組成部分 38
3.1.2 安全提供者體係結構 39
3.1.3 關於齣口的限製 40
3.1.4 關於本章內容 40
3.2 java.security包詳解 40
3.2.1 Provider類 41
3.2.2 Security類 44
3.2.3 MessageDigest類 46
3.2.4 DigestInputStream類 49
3.2.5 DigestOutputStream類 49
3.2.6 Key接口 52
3.2.7 AlgorithmParameters類 53
3.2.8 AlgorithmParameterGenerator類 55
3.2.9 KeyPair類 56
3.2.10 KeyPairGenerator類 57
3.2.11 KeyFactory類 59
3.2.12 SecureRandom類 61
3.2.13 Signature類 62
3.2.14 SignedObject類 65
3.2.15 Timestamp類 66
3.2.16 CodeSigner類 67
3.2.17 KeyStore類 69
3.3 javax.crypto包詳解 73
3.3.1 Mac類 73
3.3.2 KeyGenerator類 75
3.3.3 KeyAgreement類 77
3.3.4 SecretKeyFactory類 78
3.3.5 Cipher類 80
3.3.6 CipherInputStream類 84
3.3.7 CipherOutputStream類 83
3.3.8 SealedObject類 86
3.4 java.security.spec包和javax.crypto.spec包詳解 88
3.4.1 KeySpec和Algorithm-ParameterSpec接口 88
3.4.2 EncodedKeySpec類 89
3.4.3 SecretKeySpec類 92
3.4.4 DESKeySpec類 93
3.5 java.security.cert包詳解 94
3.5.1 Certificate類 94
3.5.2 CertificateFactory類 95
3.5.3 X509Certificate類 97
3.5.4 CRL類 98
3.5.5 X509CRLEntry類 99
3.5.6 X509CRL類 100
3.5.7 CertPath類 102
3.6 javax.net.ssl包詳解 103
3.6.1 KeyManagerFactory類 103
3.6.2 TrustManagerFactory類 105
3.6.3 SSLContext類 106
3.6.4 HttpsURLConnection類 109
3.6.5 SSLSession接口 111
3.6.6 SSLSocketFactory類 111
3.6.7 SSLSocket類 112
3.6.8 SSLServerSocketFactory類 114
3.6.9 SSLServerSocket類 114
3.7 小結 117
第4章 他山之石,可以攻玉 119
4.1 加固你的係統 119
4.1.1 獲得權限文件 120
4.1.2 配置權限文件 120
4.1.3 驗證配置 121
4.2 加密組件Bouncy Castle 121
4.2.1 獲得加密組件 122
4.2.2 擴充算法支持 122
4.2.3 相關API 126
4.3 輔助工具Commons Codec 130
4.3.1 獲得輔助工具 130
4.3.2 相關API 131
4.4 小結 141
第二部分 實踐篇
第5章 電子郵件傳輸算法—Base64 144
5.1 Base64算法的由來 144
5.2 Base64算法的定義 144
5.3 Base64算法與加密算法的關係 145
5.4 實現原理 146
5.4.1 ASCII碼字符編碼 146
5.4.2 非ASCII碼字符編碼 147
5.5 模型分析 147
5.6 Base64算法實現 148
5.6.1 Bouncy Castle 148
5.6.2 Commons Codec 150
5.6.3 兩種實現方式的差異 154
5.6.4 不得不說的問題 154
5.7 Url Base64算法實現 157
5.7.1 Bouncy Castle 157
5.7.2 Commons Codec 159
5.7.3 兩種實現方式的差異 160
5.8 應用舉例 161
5.8.1 電子郵件傳輸 161
5.8.2 網絡數據傳輸 161
5.8.3 密鑰存儲 162
5.8.4 數字證書存儲 162
5.8.5 OpenSSL操作Base 64編碼 163
5.9 小結 163
第6章 驗證數據完整性—消息摘要算法 165
6.1 消息摘要算法簡述 165
6.1.1 消息摘要算法的由來 165
6.1.2 消息摘要算法的傢譜 166
6.2 MD算法傢族 167
6.2.1 簡述 167
6.2.2 模型分析 168
6.2.3 實現 170
6.3 SHA算法傢族 177
6.3.1 簡述 177
6.3.2 模型分析 178
6.3.3 實現 179
6.4 MAC算法傢族 191
6.4.1 簡述 191
6.4.2 模型分析 192
6.4.3 實現 192
6.5 其他消息摘要算法 205
6.5.1 簡述 205
6.5.2 實現 205
6.6 循環冗餘校驗算法—CRC算法 216
6.6.1 簡述 216
6.6.2 模型分析 217
6.6.3 實現 217
6.7 實例:文件校驗 219
6.8 小結 222
第7章 初等數據加密—對稱加密算法 224
7.1 對稱加密算法簡述 224
7.1.1 對稱加密算法的由來 224
7.1.2 對稱加密算法的傢譜 225
7.2 數據加密標準—DES 225
7.2.1 簡述 225
7.2.2 模型分析 226
7.2.3 實現 227
7.3 三重DES—DESede 233
7.3.1 簡述 233
7.3.2 實現 233
7.4 高級數據加密標準—AES 238
7.4.1 簡述 238
7.4.2 實現 239
7.5 國際數據加密標準—IDEA 243
7.5.1 簡述 243
7.5.2 實現 243
7.6 基於口令加密—PBE 247
7.6.1 簡述 247
7.6.2 模型分析 247
7.6.3 實現 248
7.7 實例:對稱加密網絡應用 253
7.8 小結 265
第8章 高等數據加密—非對稱加密算法 267
8.1 非對稱加密算法簡述 267
8.1.1 非對稱加密算法的由來 267
8.1.2 非對稱加密算法的傢譜 268
8.2 密鑰交換算法—DH&ECDH 269
8.2.1 簡述 269
8.2.2 模型分析 269
8.2.3 DH實現 270
8.2.4 ECDH實現 280
8.3 典型非對稱加密算法—RSA 289
8.3.1 簡述 289
8.3.2 模型分析 290
8.3.3 實現 291
8.4 常用非對稱加密算法—ElGamal 298
8.4.1 簡述 298
8.4.2 模型分析 298
8.4.3 實現 299
8.5 實例:非對稱加密網絡應用 305
8.6 小結 317
第9章 帶密鑰的消息摘要算法—數字簽名算法 319
9.1 數字簽名算法簡述 319
9.1.1 數字簽名算法的由來 319
9.1.2 數字簽名算法的傢譜 320
9.2 模型分析 320
9.3 經典數字簽名算法—RSA 321
9.3.1 簡述 322
9.3.2 實現 322
9.4 數字簽名標準算法—DSA 328
9.4.1 簡述 328
9.4.2 實現 328
9.5 橢圓麯綫數字簽名算法—ECDSA 333
9.5.1 簡述 333
9.5.2 實現 333
9.6 實例:帶有數字簽名的加密網絡應用 341
9.7 小結 352
第三部分 綜閤應用篇
第10章 終極武器—數字證書 356
10.1 數字證書詳解 356
10.2 模型分析 359
10.2.1 證書簽發 359
10.2.2 加密交互 360
10.3 證書管理 361
10.3.1 KeyTool證書管理 361
10.3.2 OpenSSL證書管理 368
10.4 證書文件操作 379
10.4.1 JKS文件操作 379
10.4.2 PFX文件操作 388
10.4.3 PEM文件操作 390
10.5 應用舉例 394
10.6 小結 394
第11章 終極裝備—安全協議 396
11.1 安全協議簡述 396
11.1.1 HTTPS協議 396
11.1.2 SSL/TLS協議 397
11.2 模型分析 398
11.2.1 協商算法 399
11.2.2 驗證證書 399
11.2.3 産生密鑰 400
11.2.4 加密交互 402
11.3 單嚮認證服務 403
11.3.1 準備工作 403
11.3.2 服務驗證 408
11.3.3 代碼驗證 410
11.4 雙嚮認證服務 415
11.4.1 準備工作 415
11.4.2 服務驗證 418
11.4.3 代碼驗證 420
11.5 應用舉例 421
11.6 實例 422
11.6.1 SSLSocket獲取數字證書 422
11.6.2 SSLSocket加密交互 425
11.7 小結 429
第12章 量體裁衣—為應用選擇閤適的裝備 431
12.1 實例:常規Web應用開發安全 431
12.1.1 常規Web應用基本實現 431
12.1.2 安全升級1—摘要處理 436
12.1.3 安全升級2—加鹽處理 438
12.2 實例:IM應用開發安全 441
12.2.1 IM應用開發基本實現 441
12.2.2 安全升級1—隱藏數據 454
12.2.3 安全升級2—加密數據 457
12.3 實例:Web Service應用開發安全 462
12.3.1 Web Service應用基本實現 462
12.3.2 安全升級1—單嚮認證服務 469
12.3.3 安全升級2—雙嚮認證服務 480
12.4 小結 485
附錄A Java 7支持的算法 487
附錄B Bouncy Castle支持的算法 490
· · · · · · (
收起)