第1章 密码学及其应用概述 1
1.1 安全通信 1
1.1.1 可能的攻击 2
1.1.2 对称和公钥算法 3
1.1.3 密钥长度 4
1.2 密码学应用 5
第2章 传统密码系统 7
2.1 移位密码 7
2.2 仿射密码 8
2.3 维吉内尔密码 9
2.3.1 算出密钥长度 11
2.3.2 算出密钥的第一种方法 11
2.3.3 算出密钥的第二种方法 13
2.4 替换密码 14
2.5 夏洛克·福尔摩斯 16
2.6 Playfair和ADFGX密码 18
2.7 分组密码 20
2.8 二进制数和ASCII码 23
2.9 一次一密 24
2.10 伪随机序列的生成 25
2.11 线性反馈移位寄存序列 26
2.12 Enigma密码机 30
习题 33
上机练习 35
第3章 基本数论 38
3.1 基本概念 38
3.1.1 整除性 38
3.1.2 素数 38
3.1.3 最大公因子 39
3.2 求解ax+by=d 41
3.3 同余式 42
3.3.1 除法 43
3.3.2 使用分式 45
3.4 中国剩余定理 45
3.5 模指数 47
3.6 费马小定理和欧拉定理 48
3.7 本原根 50
3.8 矩阵模n取逆 51
3.9 模n平方根 52
3.10 勒让德和雅可比符号 53
3.11 有限域 57
3.11.1 除法 59
3.11.2 GF(28) 60
3.11.3 线性移位寄存器序列 61
3.12 连分数 62
习题 64
上机练习 68
第4章 数据加密标准 69
4.1 引言 69
4.2 DES算法的简化版 69
4.3 差分密码分析 72
4.3.1 3轮的差分密码分析 72
4.3.2 4轮的差分密码分析 73
4.4 DES 75
4.5 工作模式 80
4.5.1 电子密码本 80
4.5.2 密码分组链接 80
4.5.3 密码反馈 81
4.5.4 输出反馈 83
4.5.5 计数器 84
4.6 破解DES 85
4.7 中间相遇攻击 87
4.8 口令安全 88
习题 89
上机练习 90
第5章 高级加密标准:Rijndael 91
5.1 基本算法 91
5.2 层的描述 92
5.2.1 ByteSub变换 93
5.2.2 ShiftRow变换 93
5.2.3 MixColumn变换 93
5.2.4 AddRoundKey变换 94
5.2.5 密钥扩展方案 94
5.2.6 S盒的构成 94
5.3 解密算法 95
5.4 设计中的考虑 97
习题 97
第6章 RSA算法 99
6.1 RSA算法 99
6.2 对RSA的攻击 102
6.2.1 低指数攻击 102
6.2.2 短明文 104
6.2.3 时间攻击 105
6.3 素性判定 106
6.4 因子分解 109
6.4.1 二次筛法 110
6.4.2 理论方法 112
6.5 RSA挑战 112
6.6 协约验证上的应用 113
6.7 公钥概念 114
习题 115
上机练习 118
第7章 离散对数 120
7.1 离散对数 120
7.2 计算离散对数 120
7.2.1 Pohlig-Hellman算法 121
7.2.2 大步骤,小步骤 123
7.2.3 指标计算 123
7.2.4 计算模4的离散对数 124
7.3 位提交 125
7.4 Diffie-Hellman密钥交换 126
7.5 ElGamal公钥密码系统 127
习题 128
上机练习 129
第8章 散列函数 130
8.1 散列函数 130
8.2 简单的散列函数示例 132
8.3 SHA散列算法 133
8.4 生日攻击 136
8.5 多重碰撞 138
8.6 随机预示模型 139
8.7 用散列函数加密 141
习题 142
上机练习 143
第9章 数字签名 145
9.1 RSA签名方案 145
9.2 ElGamal签名方案 146
9.3 散列和签名 148
9.4 对签名的生日攻击 148
9.5 数字签名算法 148
习题 150
上机练习 151
第10章 安全协议 152
10.1 中间人攻击和冒名顶替者 152
10.2 密钥分配 154
10.2.1 密钥的事先分配 154
10.2.2 可鉴别的密钥分配 155
10.3 Kerberos协议 158
10.4 PKI 160
10.5 X.509证书 161
10.6 PGP协议 164
10.7 SSL和TLS协议 165
10.8 SET协议 167
习题 168
第11章 数字现金 170
11.1 数字现金 170
11.1.1 参与者 171
11.1.2 初始化 171
11.1.3 银行 171
11.1.4 消费者 171
11.1.5 商家 171
11.1.6 创建货币 171
11.1.7 消费货币 172
11.1.8 商家在银行存款 172
11.1.9 欺骗控制 173
11.1.10 匿名性 173
习题 174
第12章 秘密分享方案 175
12.1 秘密分拆 175
12.2 阈方案 175
习题 179
上机练习 180
第13章 游戏 181
13.1 通过电话抛硬币 181
13.2 通过电话玩牌 182
习题 185
第14章 零知识技术 187
14.1 基本建构 187
14.2 Feige-Fiat-Shamir认证方案 188
习题 190
第15章 信息论 192
15.1 概率论回顾 192
15.2 熵 193
15.3 赫夫曼编码 196
15.4 完全保密 198
15.5 英语的熵 199
习题 203
第16章 椭圆曲线 205
16.1 加法运算 205
16.2 模p椭圆曲线 208
16.2.1 模p椭圆曲线上点的个数 209
16.2.2 椭圆曲线上的离散对数 210
16.2.3 表示明文 210
16.3 用椭圆曲线因式分解 211
16.4 特征为2的椭圆曲线 213
16.5 椭圆曲线密码系统 215
16.5.1 椭圆曲线ElGamal密码系统 215
16.5.2 椭圆曲线Diffie-Hellman密钥交换 216
16.5.3 椭圆曲线ElGamal数字签名 216
16.6 基于标识的加密 217
习题 219
上机练习 222
第17章 格方法 223
17.1 格 223
17.2 格归约 224
17.2.1 二维格 224
17.2.2 LLL算法 226
17.3 对RSA算法的攻击 227
17.4 NTRU系统 229
习题 232
第18章 纠错码 233
18.1 引言 233
18.2 纠错码 237
18.3 一般码的界 239
18.3.1 上界 239
18.3.2 下界 241
18.4 线性码 243
18.5 汉明码 247
18.6 格雷码 248
18.7 循环码 253
18.8 BCH码 257
18.9 瑞德-所罗门码 262
18.10 McEliece密码系统 263
18.11 其他问题 265
习题 265
上机练习 267
第19章 密码学中的量子技术 268
19.1 量子实验 268
19.2 量子密钥分发 270
19.3 Shor的算法 271
19.3.1 分解 272
19.3.2 离散傅里叶变换 272
19.3.3 Shor的算法 274
19.3.4 结语 277
习题 278
附录A Mathematica?实例 279
附录B Maple?实例(图灵网站下载)附录C MATLAB?实例(图灵网站下载)推荐阅读 297
参考文献 298
索引 301