第1章 概述 1
1.1 密码学简介 1
1.2 信息安全遇到的威胁 3
1.3 密码编码和信息安全提供的服务 4
1.4 习题 5
第1部分 古典密码 9
第2章 古典密码编码技术 9
2.1 单表代替密码 9
2.1.1 单表代替密码编码原理 9
2.1.2 单表代替密码算法实现 9
2.2 移位密码 12
2.2.1 移位密码算法原理 12
2.2.2 移位密码算法实现 12
2.3 乘数密码 13
2.3.1 乘数密码算法原理 13
2.3.2 扩展的欧几里得算法 14
2.3.3 乘数密码算法实现 17
2.3.4 扩展的欧几里得算法的实现 18
2.4 多表代替密码 19
2.4.1 维吉尼亚密码原理 20
2.4.2 维吉尼亚密码实现 21
2.4.3 希尔密码的原理 24
2.4.4 希尔密码的实现 26
2.5 习题与实践题 30
2.5.1 习题 30
2.5.2 实践题 31
第2部分 现代对称密码 35
第3章 S-DES算法 35
3.1 S-DES算法原理 35
3.2 S-DES密钥的生成 35
3.3 S-DES加密与解密过程 36
3.4 S-DES算法实现 39
3.5 Feistel密码结构 46
3.6 习题与实践题 47
3.6.1 习题 47
3.6.2 实践题 48
第4章 DES算法 49
4.1 DES算法原理 49
4.2 DES密钥生成 50
4.3 DES算法加密过程 51
4.4 DES算法实现 54
4.4.1 初始化数据 56
4.4.2 生成子密钥 59
4.4.3 加密和解密 61
4.5 DES算法的变种 65
4.5.1 三重DES算法 66
4.5.2 独立子密钥的DES算法 66
4.6 习题与实践题 66
4.6.1 习题 66
4.6.2 实践题 67
第5章 AES算法 68
5.1 置换-组合结构 68
5.2 AES算法原理 69
5.3 AES密钥生成 74
5.4 AES算法实现 77
5.4.1 数据初始化 79
5.4.2 轮密钥计算 83
5.4.3 AES加密过程的实现 86
5.4.4 AES解密过程的实现 90
5.5 习题与实践题 92
5.5.1 习题 92
5.5.2 实践题 92
第6章 IDEA算法 93
6.1 IDEA算法原理 93
6.1.1 IDEA算法的基本结构 93
6.1.2 IDEA算法的加密过程 93
6.1.3 子密钥的生成 95
6.2 IDEA算法实现 96
6.2.1 数据初始化 97
6.2.2 密钥生成 98
6.2.3 加密过程和解密过程的实现 101
6.2.4 程序测试 103
6.3 习题与实践题 104
6.3.1 习题 104
6.3.2 实践题 105
第7章 Blowfish算法 106
7.1 Blowfish算法原理 106
7.1.1 Blowfish算法的加解密过程 106
7.1.2 Blowfish算法的密钥生成 107
7.2 Blowfish算法实现 108
7.2.1 加密和解密的实现 109
7.2.2 数据初始化 111
7.2.3 程序测试 117
7.3 习题与实践题 118
7.3.1 习题 118
7.3.2 实践题 118
第8章 CAST-128算法 119
8.1 CAST-128算法原理 119
8.1.1 CAST-128算法的加密过程 119
8.1.2 CAST-128算法的子密钥生成 120
8.2 CAST-128算法实现 122
8.2.1 密钥生成 123
8.2.2 加密和解密 127
8.2.3 数据初始化和程序测试 130
8.3 习题与实践题 139
8.3.1 习题 139
8.3.2 实践题 139
第9章 分组密码模式 140
9.1 电子密码本模式 140
9.2 密码分组链接模式 141
9.3 明文密码分组链接模式 142
9.4 密码反馈模式 142
9.5 输出反馈模式 144
9.6 计数器模式 145
9.7 填充 146
9.8 习题与实践题 148
9.8.1 习题 148
9.8.2 实践题 148
第10章 A5算法 149
10.1 序列密码原理 149
10.1.1 基本原理 149
10.1.2 线性反馈移位寄存器 150
10.2 A5/1算法原理 152
10.3 A5/1算法实现 154
10.3.1 A5/1算法实现的基本结构 154
10.3.2 A5/1算法具体实现 156
10.3.3 测试 160
10.4 习题与实践题 161
10.4.1 习题 161
10.4.2 实践题 161
第11章 RC4算法 163
11.1 RC4算法原理 163
11.2 RC4算法实现 165
11.2.1 RC4算法实现的基本结构 165
11.2.2 初始化 166
11.2.3 加密和解密 168
11.2.4 RC4算法测试 169
11.3 习题与实践题 171
11.3.1 习题 171
11.3.2 实践题 171
第12章 RC5算法 172
12.1 RC5算法原理 172
12.1.1 RC5加密和解密的基本原理 172
12.1.2 RC5密钥生成 173
12.2 RC5算法实现 175
12.2.1 RC5算法实现的基本结构 175
12.2.2 密钥生成 176
12.2.3 加密和解密过程的实现 178
12.2.4 RC5算法测试 179
12.3 习题与实践题 180
12.3.1 习题 180
12.3.2 实践题 180
第13章 RC6算法 181
13.1 RC6算法原理 181
13.1.1 RC6算法的加密和解密 181
13.1.2 RC6算法的密钥生成 182
13.2 RC6算法实现 183
13.2.1 RC6算法实现的基本结构 183
13.2.2 密钥生成 185
13.2.3 加密和解密的实现 186
13.2.4 RC6算法测试 188
13.3 习题与实践题 190
13.3.1 习题 190
13.3.2 实践题 190
第3部分 公钥密码算法 193
第14章 RSA算法 193
14.1 基础知识 193
14.1.1 计算复杂性理论 193
14.1.2 中国剩余定理 194
14.1.3 Euler函数 195
14.1.4 Euler定理和Fermat小定理 195
14.1.5 模运算 196
14.2 素数与素性测试 197
14.2.1 Rabin-Miller素性检测法 198
14.2.2 Solovag-Strassen素性检测法 199
14.2.3 Lehmann素性检测法 201
14.2.4 AKS素性检测法 202
14.3 大数运算 203
14.3.1 大数运算的基本方法 203
14.3.2 基于32位进制的大数运算方法 203
14.4 RSA公钥密码算法原理 208
14.5 RSA公钥加密算法实现 209
14.5.1 大数运算的实现 209
14.5.2 素性检测的实现 230
14.5.3 RSA算法的实现 234
14.5.4 RSA加密算法测试 238
14.6 习题与实践题 239
14.6.1 习题 239
14.6.2 实践题 239
第15章 Diffie-Hellman密钥交换算法 243
15.1 Diffie-Hellman算法原理 243
15.1.1 Diffie-Hellman密钥交换算法基础 243
15.1.2 Diffie-Hellman密钥交换算法计算过程 244
15.2 Diffie-Hellman算法实现 246
15.2.1 生成素数p 248
15.2.2 本原根的生成 249
15.2.3 密钥生成 251
15.2.4 Diffie-Hellman算法测试 253
15.3 习题与实践题 254
15.3.1 习题 254
15.3.2 实践题 254
第16章 Elgamal加密算法 255
16.1 Elgamal加密算法原理 255
16.2 Elgamal加密算法实现 256
16.2.1 密钥的生成与解密的实现 256
16.2.2 加密的实现 262
16.2.3 算法测试 265
16.3 习题与实践题 267
16.3.1 习题 267
16.3.2 实践题 267
第4部分 散列函数 271
第17章 MD4算法与MD5算法 271
17.1 散列算法基础 271
17.1.1 散列算法的基本概念 271
17.1.2 散列算法的使用方法 273
17.2 MD4算法原理 275
17.3 MD4算法实现 278
17.3.1 MD4算法实现的基本结构 278
17.3.2 数据初始化 280
17.3.3 辅助函数的实现 281
17.3.4 哈希值计算过程的实现 284
17.3.5 测试与输出 287
17.4 MD5算法原理 289
17.5 MD5算法实现 291
17.5.1 MD5算法实现的基本结构 291
17.5.2 数据初始化 293
17.5.3 辅助函数的实现 293
17.5.4 哈希值计算过程的实现 295
17.5.5 测试与输出 297
17.6 习题与实践题 298
17.6.1 习题 298
17.6.2 实践题 298
第18章 SHA-1算法 299
18.1 SHA-1算法原理 299
18.2 SHA-1算法实现 302
18.2.1 SHA-1算法实现的基本结构 302
18.2.2 数据初始化 303
18.2.3 哈希值计算过程的实现 305
18.2.4 测试与输出 309
18.3 习题与实践题 310
18.3.1 习题 310
18.3.2 实践题 310
第19章 RIPEMD-160算法 311
19.1 RIPEMD-160算法原理 311
19.2 RIPEMD-160算法实现 314
19.2.1 RIPEMD-160算法实现的基本结构 314
19.2.2 数据初始化 316
19.2.3 辅助函数的实现 317
19.2.4 哈希值计算过程的实现 320
19.2.5 测试与输出 325
19.3 习题与实践题 327
19.3.1 习题 327
19.3.2 实践题 327
第5部分 数字签名 331
第20章 数字签名 331
20.1 数字签名概述 331
20.2 RSA数字签名方案 332
20.3 Elgamal数字签名方案 333
20.4 DSA数字签名方案 335
20.5 盲签名 337
20.5.1 盲签名基本原理 337
20.5.2 RSA盲签名 338
20.6 习题与实践题 338
20.6.1 习题 338
20.6.2 实践题 339
参考文献 340