第一部分 基于C++的算术和数论 3
第1章 引论 3
1.1 关于软件的使用 5
1.2 使用软件的合法条件 7
第2章 数的格式:大数在C中的表示 8
第3章 接口语义 11
第4章 基本运算 13
4.1 加法和减法 13
4.2 乘法 20
4.2.1 学校方法 21
4.2.2 更快的平方 26
4.2.3 用Karatsuba方法会更快吗 29
4.3 带余除法 33
第5章 模算术:剩余类的计算 45
第6章 百川归海:模乘方 54
6.1 最初的方法 54
6.2 Mary乘方 58
6.3 加法链和窗 68
6.4 Montgomery约化和乘方 71
6.5 乘方在密码学中的应用 80
7.1 移位运算 85
第7章 位函数和逻辑函数 85
7.2 位关系的有与无 89
7.3 直接存取单个二进制数 93
7.4 比较运算 95
第8章 输入、输出、赋值和转换 99
第9章 动态寄存器 107
第10章 基本数论函数 113
10.1 最大公约数 113
10.2 剩余类环中的乘法逆 118
10.3 根与对数 124
10.4.1 Jacobi符号 129
10.4 剩余类环中的平方根 129
10.4.2 模pk的平方根 134
10.4.3 模n的平方根 138
10.4.4 利用二次剩余的密码系统 144
10.5 素性检验 146
第11章 大随机数 160
第12章 检验LINT的策略 168
12.1 静态分析 169
12.2 运行时问检验 170
第13章 用C++的类提高效率 177
第二部分 用于C++的算术和密码学 177
13.1 非公共事务:LINT中数的表示 180
13.2 构造函数 180
13.3 承载运算符 183
第14章 LINT公共接口:成员函数和友员函数 189
14.1 算术 189
14.2 数论 195
14.3 LINT对象的流I/O 198
14.3.1 LINT对象的格式化输出 199
14.3.2 操作器 204
14.3.3 LINT对象的文件I/O 206
第15章 对错误的处理 210
15.1 冷静对待错误 210
15.2 用户定义的错误处理 211
15.3 异常情况:LINT异常 212
第16章 一个应用实例:RSA方法 217
16.1 非对称密码系统 217
16.2 RSA算法 218
16.3 数字RSA签名 228
16.4 使用C++的RSA类 232
第17章 自己动手测试LINT 240
第18章 进一步扩展的方法 242
第19章 DES的继任者Rijndael 244
19.1 多项式算术 245
19.2 Rijndael算法 248
19.3 计算轮密钥 250
19.4 S盒 251
19.5 ShiftRow变换 253
19.6 MixColumn变换 254
19.7 AddRoundKey步骤 254
19.8 加密的全过程 254
19.9 解密 257
19.11 模式 259
19.10 性能 259
第20章 后记 261
第三部分 附录 265
附录A C函数一览表 265
附录B C++函数一览表 270
附录C 宏 279
附录D 计算时间 282
附录E 符号 284
附录F 算术和数论软件包 286
参考文献 288