图书简介:
第1章 数论基础算法
1.1 算法原理
1.1.1 厄拉多塞筛算法
1.1.2 欧几里得算法
1.1.3 快速幂取模算法
1.1.4 中国剩余定理
1.1.5 Miller-Rabin素性检测算法
1.2 算法实现
1.2.1 厄拉多塞筛算法实现
1.2.2 欧几里得算法实现
1.2.3 快速幂取模算法实现
1.2.4 中国剩余定理实现
1.2.5 Miller-Rabin素性检测算法实现
1.3 算法测试
1.3.1 厄拉多塞筛算法测试
1.3.2 欧几里得算法测试
1.3.3 快速幂取模算法测试
1.3.4 中国剩余定理测试
1.3.5 Miller-Rabin素性检测算法测试
1.4 思考题
第2章 有限域算法
2.1 算法原理
2.1.1 有限域四则运算算法
2.1.2 有限域欧几里得算法
2.1.3 有限域求乘法逆元算法
2.2 算法实现
2.2.1 有限域四则运算算法实现
2.2.2 有限域欧几里得算法实现
2.2.3 有限域求乘法逆元算法实现
2.3 算法测试
2.3.1 有限域四则运算算法测试
2.3.2 有限域欧几里得算法测试
2.3.3 有限域求乘法逆元算法测试
2.4 思考题
第3章 古典密码算法
3.1 算法原理
3.1.1 置换密码
3.1.2 代替密码
3.2 算法实现
3.2.1 栅栏密码实现
3.2.2 矩阵密码实现
3.2.3 单表代替密码实现
3.2.4 仿射密码实现
3.2.5 维吉尼亚密码实现
3.2.6 弗纳姆密码实现
3.2.7 Hill密码实现
3.3 算法测试
3.3.1 栅栏密码测试
3.3.2 矩阵密码测试
3.3.3 单表代替密码测试
3.3.4 仿射密码测试
3.3.5 维吉尼亚密码测试
3.3.6 弗纳姆密码测试
3.3.7 Hill密码测试
3.4 思考题
第4章 DES算法
4.1 算法原理
4.1.1 DES算法整体结构
4.1.2 DES算法详细结构
4.1.3 密钥选择
4.2 算法实现
4.2.1 密钥生成函数
4.2.2 加密函数
4.2.3 解密函数
4.2.4 基本变换函数
4.3 算法测试
4.3.1 输入和输出
4.3.2 中间数据
4.4 思考题
第5章 AES算法
5.1 算法原理
5.1.1 AES算法整体结构
5.1.2 AES算法详细结构
5.1.3 AES-192与AES-256
5.2 算法实现
5.2.1 密钥生成函数
5.2.2 加密函数
5.2.3 解密函数
5.2.4 基本变换函数
5.3 算法测试
5.3.1 输入和输出
5.3.2 中间数据
5.4 思考题
第6章 伪随机数算法
6.1 算法原理
6.1.1 BBS伪随机数算法
6.1.2 梅森旋转算法
6.2 算法实现
6.2.1 BBS伪随机数算法实现
6.2.2 梅森旋转算法实现
6.3 算法测试
6.3.1 BBS伪随机数算法测试
6.3.2 梅森旋转算法测试
6.4 思考题
第7章 RC4算法
7.1 算法原理
7.1.1 流密码
7.1.2 RC4算法详细结构
7.2 算法实现
7.3 算法测试
7.3.1 输入和输出
7.3.2 中间数据
7.3.3 无效置换和弱密钥问题
7.4 思考题
第8章 RSA算法
8.1 算法原理
8.1.1 RSA算法整体结构
8.1.2 RSA-OAEP算法
8.2 算法实现
8.2.1 RSA算法实现
8.2.2 RSA-OAEP算法实现
8.3 算法测试
8.3.1 RSA算法测试
8.3.2 RSA-OAEP算法测试
8.4 思考题
第9章 Diffie-Hellman密钥交换协议
9.1 算法原理
9.1.1 DH密钥交换协议
9.1.2 基于ECC的DH密钥交换协议
9.2 算法实现
9.3 算法测试
9.3.1 DH密钥交换协议测试
9.3.2 基于ECC的DH密钥交换协议测试
9.4 思考题
第10章 椭圆曲线密码算法
10.1 算法原理
10.1.1 基于ECC的加密算法
10.1.2 基于ECC的数字签名算法
10.2 算法实现
10.2.1 密钥生成算法实现
10.2.2 基于ECC的加密算法实现
10.2.3 基于ECC的数字签名算法实现
10.3 算法测试
10.3.1 基于ECC的加密算法测试
10.3.2 基于ECC的数字签名算法测试
10.4 思考题
第11章 SHA-1算法
11.1 算法原理
11.1.1 SHA-1算法整体结构
11.1.2 SHA-1算法详细结构
11.2 算法实现
11.3 算法测试
11.4 思考题
第12章 数字签名算法
12.1 算法原理
12.1.1 不带消息恢复的RSA数字签名算法
12.1.2 RSA-PSS数字签名算法
12.1.3 ElGamal数字签名算法
12.2 算法实现
12.2.1 不带消息恢复的RSA数字签名算法实现
12.2.2 RSA-PSS数字签名算法实现
12.2.3 ElGamal数字签名算法实现
12.3 算法测试
12.3.1 不带消息恢复的RSA数字签名算法测试
12.3.2 RSA-PSS数字签名算法测试
12.3.3 ElGamal数字签名算法测试
12.4 思考题
第13章 SM2算法
13.1 算法原理
13.2 算法实现
13.3 算法测试
13.3.1 输入和输出
13.3.2 中间数据
13.4 思考题
第14章 SM4算法
14.1 算法原理
14.1.1 SM4算法整体结构
14.1.2 SM4算法详细结构
14.2 算法实现
14.3 算法测试
14.4 思考题
展开
前 言
《中华人民共和国密码法》自2020年1月1日起正式实施,体现出密码工作直接关系到国家安全。目前,国内有百余所高校都设有网络空间安全、密码学、信息安全或信息对抗专业,许多高校已建有密码学实验室,并系统地开设了密码学实验课程。虽然现有的密码学实验书较多,但大多数书不太适合作为密码学实验教材。
本书从网络空间安全专业课程教学体系出发,在实验内容的编排上,力求符合教育部高等学校信息安全专业教学指导委员会制定的《高等学校信息安全专业指导性专业规范》,满足该规范对信息安全专业本科生实践能力体系的要求。本书是一本内容丰富、特色鲜明、实用性强的密码学实验教材,不仅包含了数论算法、有限域上的基本运算、古典密码算法等基本型实验和DES、AES、RSA等国际标准算法相关实验,而且还介绍了SM2、SM4等国家密码管理局公布的标准密码算法相关实验。此外,每个实验还提供了算法测试的输入/输出数据和中间数据,每章最后均附有思考题,便于读者对实验过程和结果进行分析及总结,并对所提出的问题进行深入思考。
本书共14章。第1章介绍了数论基础算法,包括厄拉多塞筛算法、欧几里得算法、快速幂取模算法、中国剩余定理和Miller-Rabin素性检测算法相关实验;第2章介绍了有限域算法相关实验;第3章介绍了古典密码算法,包括置换密码、矩阵密码、仿射密码等几种常见的古典密码算法相关实验;第4~5章介绍了DES、AES对称加密算法相关实验;第6章介绍了伪随机数算法相关实验,包括BBS、梅森旋转算法相关实验;第7~8章介绍了RC4、RSA算法相关实验;第9章介绍了Diffie-Hellman密钥交换协议相关实验;第10章介绍了椭圆曲线密码算法相关实验,包括基于椭圆曲线的加密算法和数字签名算法相关实验;第11章介绍了SHA-1算法相关实验,是美国国家标准与技术研究所(NIST)设计的安全Hash算法;第12章介绍了数字签名算法相关实验,主要介绍了不带消息恢复的RSA数字签名、RSA-PSS数字签名及基于ElGamal的数字签名;第13~14章介绍了SM2和SM4这两种密码行业标准密码算法相关实验。
本书是在作者多年密码学理论课程及密码学实验实践的基础上编写而成的。针对学生编写代码模块性差、调试代码时间远大于写代码时间等问题,本书侧重于对模块化算法实现的介绍,并给出了详细的测试数据,特别是给出了一些重要的中间数据。希望本书能够加深学生对算法模块化实现重要性的认识,减少学生调试代码的时间,进而培养学生的程序思维能力。全书内容严谨、语言精练,既可作为配套理论课的实验教材,也可作为工程实践的参考书单独使用。
在本书的编写过程中,北京航空航天大学的刘建伟教授、伍前红教授均给予编写团队深切的关怀与鼓励。感谢教学团队的李大伟、姚燕青老师的支持与配合。特别感谢北京航空航天大学网络空间安全学院刘连忠老师、白琳老师、吕继强老师、高莹老师、张宗洋老师、关振宇老师、张小明老师、陈佳老师,他们在北京航空航天大学信息安全实验室的建设中给予了大力的支持和帮助。
北京航空航天大学的陈晨、管晔玮、刘源灏、张英鹏、李宗孝、韩祎然、宋莹先、丁名杨、吴爽、宋虎涛、陈春林、王如思、朱浩、李浩民等研究生为提高本书的质量做了实验验证、文字校对等工作。尤其是管晔玮同学,为本书提供了大量的测试数据,并校对了所有算法的代码实现部分。作者在此一并向他们表示真诚的感谢。
本书得到了北京航空航天大学一流本科课程建设项目、北京航空航天大学双百工程优质课程建设项目的支持。
尽管本书积累了作者多年的实践经验和教学成果,但由于内容涉及的知识面广,实际实验中采用的实验设备和工具种类繁多,加之编写时间紧张,可能存在不足之处,恳请广大读者批评和指正。
编 者
展开