图书简介:
第1章 数论基础 1
1.1 算法原理 1
1.1.1 厄拉多塞筛算法 1
1.1.2 欧几里得算法 2
1.1.3 快速幂取模算法 3
1.1.4 中国剩余定理算法 4
1.1.5 Miller-Rabin素性检测算法 5
1.2 算法伪代码 6
1.2.1 厄拉多塞筛算法伪代码 7
1.2.2 欧几里得算法伪代码 7
1.2.3 快速幂取模算法伪代码 8
1.2.4 中国剩余定理算法伪代码 8
1.2.5 Miller-Rabin素性检测算法伪代码 9
1.3 算法实现与测试 9
1.3.1 厄拉多塞筛算法实现与测试 10
1.3.2 欧几里得算法实现与测试 10
1.3.3 快速幂取模算法实现与测试 11
1.3.4 中国剩余定理算法实现与测试 12
1.3.5 Miller-Rabin素性检测算法实现与测试 13
1.4 思考题 13
第2章 有限域算术 14
2.1 算法原理 14
2.1.1 有限域四则运算算法 14
2.1.2 有限域欧几里得算法 17
2.1.3 有限域求乘法逆元算法 18
2.2 算法伪代码 19
2.2.1 有限域四则运算算法伪代码 19
2.2.2 有限域欧几里得算法伪代码 20
2.2.3 有限域求乘法逆元算法伪代码 21
2.3 算法实现与测试 22
2.3.1 有限域四则运算算法实现与测试 22
2.3.2 有限域欧几里得算法实现与测试 22
2.3.3 有限域求乘法逆元算法实现与测试 23
2.4 思考题 23
第3章 古典密码算法 24
3.1 算法原理 24
3.1.1 置换密码 24
3.1.2 代替密码 26
3.2 算法伪代码 31
3.2.1 栅栏密码算法伪代码 31
3.2.2 矩阵密码算法伪代码 32
3.2.3 单表代替密码算法伪代码 34
3.2.4 仿射密码算法伪代码 34
3.2.5 维吉尼亚密码算法伪代码 35
3.2.6 弗纳姆密码算法伪代码 36
3.2.7 希尔密码算法伪代码 37
3.2.8 对m维希尔密码的已知明文攻击算法伪代码 38
3.3 算法实现与测试 38
3.3.1 栅栏密码算法实现与测试 39
3.3.2 矩阵密码算法实现与测试 39
3.3.3 单表代替密码算法实现与测试 39
3.3.4 仿射密码算法实现与测试 40
3.3.5 维吉尼亚密码算法实现与测试 40
3.3.6 弗纳姆密码算法实现与测试 40
3.3.7 希尔密码算法实现与测试 40
3.3.8 对m维希尔密码的已知明文攻击算法实现与测试 41
3.4 思考题 41
第4章 DES算法 42
4.1 算法原理 42
4.1.1 DES算法整体结构 42
4.1.2 DES算法详细结构 43
4.1.3 密钥选择 46
4.2 算法伪代码 47
4.2.1 密钥扩展算法伪代码 48
4.2.2 加密算法伪代码 48
4.2.3 解密算法伪代码 50
4.2.4 基本变换算法伪代码 50
4.3 算法实现与测试 51
4.3.1 输入和输出 51
4.3.2 中间数据 53
4.4 思考题 53
第5章 AES算法 54
5.1 算法原理 54
5.1.1 AES算法整体结构 54
5.1.2 AES算法详细结构 55
5.1.3 AES-192算法与AES-256算法 59
5.2 算法伪代码 60
5.2.1 密钥扩展算法伪代码 60
5.2.2 加密算法伪代码 61
5.2.3 解密算法伪代码 61
5.2.4 基本变换算法伪代码 62
5.3 算法实现与测试 64
5.3.1 输入和输出 65
5.3.2 中间数据 65
5.4 思考题 68
第6章 伪随机数算法 69
6.1 算法原理 69
6.1.1 BBS算法 69
6.1.2 梅森旋转算法 70
6.2 算法伪代码 72
6.2.1 BBS算法伪代码 72
6.2.2 梅森旋转算法伪代码 73
6.3 算法实现与测试 74
6.3.1 BBS算法实现与测试 74
6.3.2 梅森旋转算法实现与测试 75
6.4 思考题 76
第7章 RC4算法 77
7.1 算法原理 77
7.1.1 流密码 77
7.1.2 RC4算法详细结构 77
7.2 算法伪代码 79
7.3 算法实现与测试 80
7.3.1 输入和输出 80
7.3.2 中间数据 81
7.3.3 无效置换和弱密钥问题 82
7.4 思考题 82
第8章 RSA算法 83
8.1 算法原理 83
8.1.1 RSA算法整体结构 83
8.1.2 RSA-OAEP算法 84
8.2 算法伪代码 85
8.2.1 RSA算法伪代码 86
8.2.2 RSA-OAEP算法伪代码 87
8.3 算法实现与测试 90
8.3.1 RSA算法实现与测试 90
8.3.2 RSA-OAEP算法实现与测试 91
8.4 思考题 92
第9章 Diffie-Hellman密钥交换协议 93
9.1 算法原理 93
9.1.1 Diffie-Hellman密钥交换协议的原理 93
9.1.2 基于ECC的Diffie-Hellman密钥交换协议 93
9.2 算法伪代码 94
9.2.1 Diffie-Hellman密钥交换协议伪代码 95
9.2.2 基于ECC的Diffie-Hellman密钥交换协议伪代码 95
9.3 算法实现与测试 95
9.3.1 Diffie-Hellman密钥交换协议实现与测试 96
9.3.2 基于ECC的Diffie-Hellman密钥交换协议实现与测试 96
9.4 思考题 98
第10章 ECC算法 99
10.1 算法原理 99
10.1.1 基于ECC的加解密算法 100
10.1.2 基于ECC的数字签名算法 100
10.2 算法伪代码 101
10.2.1 椭圆曲线基础运算算法伪代码 101
10.2.2 密钥生成算法伪代码 103
10.2.3 基于ECC的加解密算法伪代码 103
10.2.4 基于ECC的数字签名算法伪代码 104
10.3 算法实现与测试 105
10.3.1 基于ECC的加解密算法实现与测试 105
10.3.2 基于ECC的数字签名算法实现与测试 106
10.4 思考题 107
第11章 SHA-1算法 108
11.1 算法原理 108
11.1.1 SHA-1算法整体结构 108
11.1.2 SHA-1算法详细结构 109
11.2 算法伪代码 111
11.2.1 杂凑算法伪代码 111
11.2.2 消息填充算法伪代码 112
11.2.3 字扩展算法伪代码 112
11.2.4 轮函数伪代码 113
11.2.5 逻辑函数伪代码 113
11.3 算法实现与测试 114
11.4 思考题 120
第12章 数字签名算法 121
12.1 算法原理 121
12.1.1 不带消息恢复功能的RSA数字签名算法 121
12.1.2 RSA-PSS数字签名算法 122
12.1.3 ElGamal数字签名算法 124
12.2 算法伪代码 125
12.2.1 不带消息恢复功能的RSA数字签名算法伪代码 125
12.2.2 RSA-PSS数字签名算法伪代码 126
12.2.3 ElGamal数字签名算法伪代码 128
12.3 算法实现与测试 130
12.3.1 不带消息恢复功能的RSA数字签名算法实现与测试 130
12.3.2 RSA-PSS数字签名算法实现与测试 131
12.3.3 ElGamal数字签名算法实现与测试 132
12.4 思考题 133
第13章 SM2算法 134
13.1 算法原理 134
13.2 算法伪代码 137
13.2.1 密钥生成算法伪代码 137
13.2.2 加密算法伪代码 137
13.2.3 解密算法伪代码 138
13.3 算法实现与测试 139
13.3.1 方程参数 139
13.3.2 输入和输出 140
13.3.3 中间数据 141
13.4 思考题 142
第14章 SM4算法 143
14.1 算法原理 143
14.1.1 SM4算法整体结构 143
14.1.2 SM4算法详细结构 144
14.2 算法伪代码 146
14.2.1 密钥扩展算法伪代码 146
14.2.2 加密算法伪代码 147
14.2.3 解密算法伪代码 148
14.3 算法实现与测试 148
14.4 思考题 152
第15章 SM3算法 153
15.1 算法原理 153
15.1.1 SM3算法整体结构 153
15.1.2 SM3算法详细结构 153
15.2 算法伪代码 156
15.2.1 杂凑算法伪代码 156
15.2.2 消息填充算法伪代码 157
15.2.3 消息扩展算法伪代码 157
15.2.4 压缩算法伪代码 157
15.3 算法实现与测试 158
15.4 思考题 161
第16章 ZUC算法 162
16.1 算法原理 162
16.2 算法伪代码 164
16.2.1 LFSR算法伪代码 164
16.2.2 比特重组算法伪代码 165
16.2.3 非线性函数算法伪代码 165
16.2.4 密钥装入算法伪代码 166
16.2.5 生成密钥字算法伪代码 166
16.3 算法实现与测试 167
16.4 思考题 168
第17章 SM4算法快速软件实现 169
17.1 SM4算法的S盒复合域优化 169
17.2 算法伪代码 170
17.2.1 SM4算法的S盒函数伪代码 171
17.2.2 GF((2)4)2复合域求逆算法伪代码 171
17.3 算法实现与测试 172
17.4 思考题 173
第18章 分组密码算法的工作模式 174
18.1 算法原理 174
18.1.1 ECB工作模式 174
18.1.2 CBC工作模式 174
18.1.3 CFB工作模式 175
18.1.4 OFB工作模式 176
18.1.5 CTR工作模式 177
18.2 算法伪代码 178
18.2.1 ECB工作模式算法伪代码 179
18.2.2 CBC工作模式算法伪代码 180
18.2.3 CFB工作模式算法伪代码 181
18.2.4 OFB工作模式算法伪代码 183
18.2.5 CTR工作模式算法伪代码 184
18.3 算法实现与测试 185
18.3.1 ECB工作模式算法实现与测试 185
18.3.2 CBC工作模式算法实现与测试 186
18.3.3 CFB工作模式算法实现与测试 187
18.3.4 OFB工作模式算法实现与测试 188
18.3.5 CTR工作模式算法实现与测试 188
18.4 思考题 189
展开
2020年1月1日起《中华人民共和国密码法》正式实施,密码工作直接关系国家安全。2021年教育部新增密码科学与技术本科专业,目前国内有百余所高校设有密码科学与技术、信息安全、信息对抗技术、网络空间安全等专业,许多高校已建有密码学实验室,并系统地开设了密码学实验课程。虽然现有的密码学实验图书很多,但大多数图书的内容缺乏教学实践性,尤其从本科教学的角度看,它们都不太适合作为密码学实验教材。
本书从网络空间安全专业课程教学体系出发,在实验内容的编排上,力求符合教育部高等学校网络空间安全专业教学指导委员会编制的《高等学校信息安全专业指导性专业规范(第2版)》,满足该规范对本科生实践能力体系的要求。本书是一本内容丰富、特色鲜明、实用性强的密码学实验教材。本书包含数论算法、有限域上的基本运算、古典密码等基本型实验,DES、AES、RSA等国际标准算法相关实验,以及SM2、SM3、SM4等国家密码管理局公布的国家标准算法相关实验。此外,每个实验都提供了算法实现的伪代码、算法测试的输入输出数据和中间数据,每章后面均附有思考题,便于读者对实验过程和结果进行分析和总结,并对所提出的问题进行深入思考。
本书共18章,第1章介绍了数论基础算法的实现,包括厄拉多塞筛算法、欧几里得算法、快速幂取模算法、中国剩余定理算法和Miller-Rabin素性检测算法;第2章介绍了有限域算术算法的实现;第3章介绍了古典密码算法的实现,包括栅栏密码算法、矩阵密码算法、仿射密码算法等;第4、5章介绍了DES、AES等对称密码算法的实现;第6章介绍了伪随机数算法的实现,包括BBS算法、梅森旋转算法;第7、8章介绍了RC4算法、RSA算法的实现;第9章介绍了Diffie-Hellman密钥交换协议的实现;第10章介绍了ECC算法的实现,包括基于ECC的加解密算法和数字签名算法;第11章介绍了SHA-1算法的实现,SHA-1算法是美国国家标准与技术研究院(NIST)设计的安全杂凑算法;第12章介绍了数字签名算法的实现,主要介绍了不带消息恢复功能的RSA数字签名算法、RSA-PSS数字签名算法和ElGamal数字签名算法;第13~16章介绍了4种国家标准算法的实现,包括SM2算法、SM4算法、SM3算法和ZUC算法;第17章介绍了SM4算法快速软件实现;第18章介绍了分组密码算法加解密工作模式的实现。
本书是编者在多年密码学理论课程及密码学实验实践教学的基础上编写而成的,从基础数学知识引入,对单钥密码体制、流密码体制、公钥密码体制等常见的经典密码算法实现进行了阐述。编写本书的想法来源于解决学生面临的密码学实验课程调试问题的经历。密码学实验的一大特点是需要处理大量的大数运算,导致学生实现代码后不知如何判断自己编写的代码是否正确,进而在调试代码以获得正确输出上花费了大量时间,即“实现容易调试难”的问题。目前的密码学实验教材缺少密码学算法实现的模块拆解说明、缺少中间测试数据,无法对学生的代码调试过程起到指导作用,因此需要一本包含详细模块拆解及测试数据的图书,帮助学生在学习密码学算法时实时调试代码。本书侧重于算法模块化实现的介绍,并给出了详细的测试数据,特别是给出了一些重要的中间数据。编者希望本书的这些特色能够强化学生对算法模块化实现的意识,并减少学生调试代码的时间,进而培养学生的程序思维能力。本书内容严谨、语言精练,既可作为配套理论课的实验教材,又可作为工程实践的参考书单独使用。
本书包含配套教学资源,读者可登录华信教育资源网(www.hxedu.com.cn)下载。
在本书的编写过程中,北京航空航天大学的蒋燕玲教授、伍前红教授、白琳教授均给予了编者深切的关怀与鼓励。感谢本教学团队的姚燕青副教授、李冰雨副教授的支持与配合。特别感谢北京航空航天大学网络空间安全学院吕继强教授、尚涛教授、高莹副教授、张宗洋副教授、边松副教授、张小明副教授,他们在密码学课程的建设中给予了编者大力的支持和帮助。感谢恒安嘉新(北京)科技股份公司张振涛博士等人对本书的工程化实现和优化给予的专业技术指导。本书得到了工业和信息化部“十四五”规划教材建设项目、北京航空航天大学一流本科课程建设项目、北京航空航天大学研究生核心课程建设项目,以及教育部产学合作协同育人项目的支持。
北京航空航天大学的刘伟欣、龚子睿、唐泽林、霍嘉荣、丁元朝、张宇轩、吴亚鹏、宋青林等研究生为提高本书的质量做了实验验证、文字校对等工作。尤其是刘伟欣、龚子睿、唐泽林和霍嘉荣同学,为本书提供了大量的源代码和测试数据,并校对了所有算法的代码实现部分。编者在此一并向他们表示真诚的感谢。
尽管本书积累了编者多年的实践经验和教学成果,但其涉及的知识面宽广,采用的实验设备和工具种类繁多,加之时间紧张、编者水平有限,一定存在许多不足之处,恳请广大读者给予批评和指正。
编 者
2023年11月
展开