引言 1
参考文献 8
第1章 古典密码 9
1.1单表密码 9
1.2使用密钥 11
1.2.1密钥表 12
1.2.2 ROT13 12
1.2.3 Klingon 13
1.3多表密码 13
1.3.1维吉尼亚表 14
1.4变换密码 15
1.4.1列变换 16
1.4.2双列变换 16
1.5密码分析学 17
1.5.1单表密码的破解 17
1.5.2多表密码的破译 21
1.5.3列变换密码的破译 23
1.5.4双列变换密码的破译 26
1.6小结 27
练习 27
参考文献 28
第2章 数论密码 29
2.1概率论 29
2.1.1排列和组合选择 30
2.1.2相关性 31
2.1.3生日悖论 36
2.1.4密码学上的哈希算法 39
2.2数论基础复习 41
2.2.1整除和素数 41
2.2.2同余 42
2.3代数基础复习 44
2.3.1一些定义 45
2.3.2有限域上的求逆 47
2.4基于因子分解的密码学 49
2.4.1 RSA算法 49
2.5基于离散对数的密码学 51
2.5.1 Diffie Hellman算法 51
2.6椭圆曲线 52
2.6.1点加 53
2.6.2椭圆曲线密码学 57
2.6.3椭圆曲线版本的Diffie - Hellman协议 58
2.7小结 58
习题 58
参考文献 59
第3章 整数分解和离散对数 60
3.1整数分解 60
3.2算法理论 61
3.2.1记号 62
3.2.2 Python速成课程 63
3.3指数级分解方法 65
3.3.1穷举攻击算法 66
3.3.2 Fermat平方差 68
3.3.3 Pollard的P方法 70
3.3.4 Pollard的P-1方法 72
3.3.5二次型分解算法 73
3.3.6椭圆曲线分解方法 74
3.4亚指数分解方法 75
3.4.1连分数分解算法 75
3.4.2筛法 77
3.5离散对数 77
3.5.1穷举攻击方法 78
3.5.2大步小步法 79
3.5.3离散对数的Pollard p算法 80
3.5.4离散对数的Pollardλ算法 81
3.5.5指示演算法 82
3.6小结 83
练习 83
参考文献 84
第4章 分组密码 86
4.1基于比特、字节、字的运算 86
4.1.1运算 88
4.1.2代码 89
4.2乘积密码 90
4.3替换和置换 90
4.3.1 S盒 90
4.3.2 P盒 92
4.3.3移位寄存器 93
4.4替换一置换网络 94
4.4.1 EASY1密码 95
4.5 Feistel结构 100
4.6.DES 102
4.6.1 DES密钥编制 103
4.6.2 DES轮函数 104
4.6.3三重DES 105
4.6.4 DESX 105
4.7 FEAL 106
4.7.1 S函数 107
4.7.2密钥生成函数fk 108
4.7.3轮函数f 109
4.7.4密钥编制 111
4.8 Blowfish 112
4.8.1 Blowfish的密钥编制算法 112
4.8.2 Blowfish算法 113
4.8.3轮函数 114
4.8.4注释 114
4.9 AES/Rijndael 114
4.9.1 Rijndael加密算法 115
4.9.2Rijndael解密算法 119
4.9.3密钥扩展 120
4.9.4对Rijndael的注记 121
4.10分组密码模式 121
4.10.1电子密码本 121
4.10.2密文分组链接 122
4.10.3密文反馈 123
4.10.4输出反馈 124
4.10.5计数模式 125
4.11 Skipjack 125
4.11.1 Skipjack加密算法 125
4.11.2 Skipjack解密算法 126
4.11.3置换 127
4.12消息摘要和哈希 128
4.12.1校验和 129
4.12.2循环冗余码校验 129
4.12.3 MD5 130
4.12.4 SHA-1 131
4.13随机数生成器 132
4.13.1偏差 133
4.13.2线性同余随机数生成器 133
4.14一次一密码本 134
4.15 小结 135
练习 136
参考文献 136
第5章 通用的分析方法 138
5.1穷举攻击 138
5.2时间—空间折中攻击 139
5.2.1中间相遇攻击 140
5.2.2 Hellman时间—空间折中 141
5.2.3时间—空间折中的成效 142
5.2.4缺点 143
5.2.5多表折中 143
5.2.6 Rivest的特异终点 144
5.3彩虹链表 144
5.3.1彩虹链表的优点 145
5.3.2微软局域网管理器口令哈希 145
5.4滑动攻击 146
5.4.1 Feistel密码的滑动攻击 147
5.4.2高级滑动攻击 148
5.5哈希函数分析 149
5.6随机数生成器分析 150
5.7小结 151
练习 152
参考文献 152
第6章 线性分析 154
6.1概述 154
6.2 Matsui算法 156
6.3 S盒的线性逼近 157
6.4 Matsui堆积引理 161
6.5 EASY1密码 162
6.6线性逼近和密钥恢复 165
6.7 DES的线性分析 168
6.8多重线性逼近 169
6.9寻找线性逼近 170
6.10线性分析程序代码 172
6.11小结 177
练习 177
参考文献 178
第7章 差分密码分析 179
7.1概述 179
7.2记号 179
7.3 S盒的差分 180
7.4组合S盒的特征 183
7.5获得密钥 184
7.6差分密码分析的程序代码 185
7.7 Feistel密码的差分密码分析 189
7.7.1 FEAL的差分密码分析 190
7.7.2 DES的差分密码分析 190
7.8分析 193
7.9差分—线性密码分析 193
7.10条件特征 195
7.11高阶差分 196
7.12截断差分 197
7.13不可能差分 199
7.14飞去来器攻击 201
7.15 插值攻击 203
7.16相关密钥攻击 204
7.16.1 GOST的相关密钥攻击 205
7.16.2 3DES的相关密钥攻击 205
7.17小结 206
练习 207
参考文献 207