密码编码与信息安全——C++实践

密码编码与信息安全——C++实践"

作者:王静文、吴晓艺
ISBN:9787302394112
定价:¥49
字数:千字
页数:
出版时间:2015.06.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书主要介绍了密码编码学与信息安全的常用算法所涉及的理论,并介绍了使用C++语言实现这些算法的基本过程与具体实现。本书涵盖了古典密码、对称密钥算法、公钥算法、散列函数和数字签名等几部分内容,并在每章最后附有一定量的习题与实践题供读者练习。

本书可以作为信息安全、信息与计算科学、计算机科学技术、通信工程等专业的本科生教材,也可以为从事信息安全、通信、电子工程等领域的技术人员提供参考。

前言

1. 目的/目标

在密码编码与信息安全的教学与学习过程中,大多以理论教学为主,缺少实践教学,从而对所学的理论难以有较为深入的理解。本书重在以实践帮助读者理解密码编码与信息安全的基本原理。

本书主要讨论密码编码学与信息安全的基本原理,并以基本原理为基础,重在探讨C++的实现方法。通过逐步引导的方法,分析密码编码和信息安全的功能,并针对相应的功能采用C++语言加以实现。帮助读者掌握和理解密码编码与信息安全的原理,并将理论与实践有机结合,为对密码编码和信息安全有兴趣的读者提供参考。

2. 预备知识要求

本书主要讲述密码编码与信息安全的基本原理与实现方法,读者需有基本的C++语言知识,并能够编写简单的应用程序。若有基本的密码编码与信息安全的知识,则更有利于掌握书中的内容。

3. 学习方法

本书是以实践为主,帮助理解密码编码与信息安全的基本原理,从原理出发来分析和完成具体的实现方法与过程是理想的学习方法,切忌复制或抄袭代码,理解后独立完成相关实践内容,不仅有助于理解密码编码的原理,更有助于将理论转化为实践。

在本书的撰写过程中,每一部分的原理都通过分析和实践来完成,同时,将复杂的问题尽可能简化到易于理解,便于实现。读者在学习过程中,可以参考分解问题的方法,提高解决问题的能力。同时在程序设计过程中最好对各项功能进行单独测试,避免在总体完成后增大查找程序存在问题的复杂性。

4. 内容提要

本书共分为古典密码、现代对称密码、公钥密码算法、散列函数和数字签名五个部分,在古典密码中介绍了单表代替密码、移位密码、多表代替密码等古典密码算法。在现代对称密码中介绍了SDES算法、DES算法、AES算法、IDEA算法、Blowfish算法和CAST128等多种算法。在公钥密码算法中介绍了大数运算基本原理与实现方法、RSA算法、DiffieHellman算法、Elgamal算法等。在散列函数中介绍了MD4、MD5和SHA1等算法。在数字签名中介绍了RSA数字签名方案、Elgamal数字签名方案和DSA数字签名方案等。并对书中出现的各种算法均给出了C++的具体实现5. 教学安排

本书作为教材可以根据教学学时安排具体内容,对于课时在60学时左右的教学计划可以选择大部分内容作为课程教学内容,对于课时在40学时左右的教学计划可以根据需要进行选择。例如:在第2部分内容中可以按照分类各选择一种算法作为教学内容,其中RC算法包含RC4、RC5和RC6算法,教学过程中则可以选择部分内容进行讲解,其余部分则可以作为教学参考。同样第4部分的散列算法也可以选择部分内容进行教学,算法细节不同,但基本结构有不少是相似的。

6. 错误

无论作者有多少发现错误的技巧,总有一些错误漏网,而读者往往最能发现错误,如果读者发现任何认为是错误的地方,请提出纠正建议,并发送电子邮件至 wang_jingwen@yeah.net,我们会非常感谢读者的帮助。

7. 编程环境

本书中的所有示例均采用G++编译器进行编译,编程环境为Code∷Blocks,保证了在Windows环境或Linux环境的兼容性,Code∷Blocks的下载网址为:http://www.codeblocks.org。若读者在Windows环境中使用VC进行处理,需做相应的修改以适应VC的编译器。

8. 致谢

本书在撰写过程中得到很多人的支持和帮助,特别要感谢何立国教授,对书中许多有关数学知识与相关证明的地方给出了很多宝贵的建议,使得本书更加完善。

编者2015年3月

目录

第1章概述1

1.1密码学简介1

1.2信息安全遇到的威胁3

1.3密码编码和信息安全提供的服务4

1.4习题5

第1部分古 典 密 码

第2章古典密码编码技术9

2.1单表代替密码9

2.1.1单表代替密码编码原理9

2.1.2单表代替密码算法实现9

2.2移位密码12

2.2.1移位密码算法原理12

2.2.2移位密码算法实现12

2.3乘数密码13

2.3.1乘数密码算法原理13

2.3.2扩展的欧几里得算法14

2.3.3乘数密码算法实现17

2.3.4扩展的欧几里得算法的实现18

2.4多表代替密码19

2.4.1维吉尼亚密码原理20

2.4.2维吉尼亚密码实现21

2.4.3希尔密码的原理24

2.4.4希尔密码的实现26

2.5习题与实践题30

2.5.1习题30

2.5.2实践题31

第2部分现代对称密码

第3章SDES算法35

3.1SDES算法原理35

3.2SDES密钥的生成35

3.3SDES加密与解密过程36

3.4SDES算法实现39

3.5Feistel密码结构46

3.6习题与实践题47

3.6.1习题47

3.6.2实践题48

第4章DES算法49

4.1DES算法原理49

4.2DES密钥生成50

4.3DES算法加密过程51

4.4DES算法实现54

4.4.1初始化数据56

4.4.2生成子密钥59

4.4.3加密和解密61

4.5DES算法的变种65

4.5.1三重DES算法66

4.5.2独立子密钥的DES算法66

4.6习题与实践题66

4.6.1习题66

4.6.2实践题67

第5章AES算法68

5.1置换组合结构68

5.2AES算法原理69

5.3AES密钥生成74

5.4AES算法实现77

5.4.1数据初始化79

5.4.2轮密钥计算83

5.4.3AES加密过程的实现86

5.4.4AES解密过程的实现90

5.5习题与实践题92

5.5.1习题92

5.5.2实践题92

第6章IDEA算法93

6.1IDEA算法原理93

6.1.1IDEA算法的基本结构93

6.1.2IDEA算法的加密过程93

6.1.3子密钥的生成95

6.2IDEA算法实现96

6.2.1数据初始化97

6.2.2密钥生成98

6.2.3加密过程和解密过程的实现101

6.2.4程序测试103

6.3习题与实践题104

6.3.1习题104

6.3.2实践题105

第7章Blowfish算法106

7.1Blowfish算法原理106

7.1.1Blowfish算法的加解密过程106

7.1.2Blowfish算法的密钥生成107

7.2Blowfish算法实现108

7.2.1加密和解密的实现109

7.2.2数据初始化111

7.2.3程序测试117

7.3习题与实践题118

7.3.1习题118

7.3.2实践题118

第8章CAST128算法119

8.1CAST128算法原理119

8.1.1CAST128算法的加密过程119

8.1.2CAST128算法的子密钥生成120

8.2CAST128算法实现122

8.2.1密钥生成123

8.2.2加密和解密127

8.2.3数据初始化和程序测试130

8.3习题与实践题139

8.3.1习题139

8.3.2实践题139

第9章分组密码模式140

9.1电子密码本模式140

9.2密码分组链接模式141

9.3明文密码分组链接模式142

9.4密码反馈模式142

9.5输出反馈模式144

9.6计数器模式145

9.7填充146

9.8习题与实践题148

9.8.1习题148

9.8.2实践题148

第10章A5算法149

10.1序列密码原理149

10.1.1基本原理149

10.1.2线性反馈移位寄存器150

10.2A5/1算法原理152

10.3A5/1算法实现154

10.3.1A5/1算法实现的基本结构154

10.3.2A5/1算法具体实现156

10.3.3测试160

10.4习题与实践题161

10.4.1习题161

10.4.2实践题161

第11章RC4算法163

11.1RC4算法原理163

11.2RC4算法实现165

11.2.1RC4算法实现的基本结构165

11.2.2初始化166

11.2.3加密和解密168

11.2.4RC4算法测试169

11.3习题与实践题171

11.3.1习题171

11.3.2实践题171

第12章RC5算法172

12.1RC5算法原理172

12.1.1RC5加密和解密的基本原理172

12.1.2RC5密钥生成173

12.2RC5算法实现175

12.2.1RC5算法实现的基本结构175

12.2.2密钥生成176

12.2.3加密和解密过程的实现178

12.2.4RC5算法测试179

12.3习题与实践题180

12.3.1习题180

12.3.2实践题180

第13章RC6算法181

13.1RC6算法原理181

13.1.1RC6算法的加密和解密181

13.1.2RC6算法的密钥生成182

13.2RC6算法实现183

13.2.1RC6算法实现的基本结构183

13.2.2密钥生成185

13.2.3加密和解密的实现186

13.2.4RC6算法测试188

13.3习题与实践题190

13.3.1习题190

13.3.2实践题190

第3部分公钥密码算法

第14章RSA算法193

14.1基础知识193

14.1.1计算复杂性理论193

14.1.2中国剩余定理194

14.1.3Euler函数195

14.1.4Euler定理和Fermat小定理195

14.1.5模运算196

14.2素数与素性测试197

14.2.1RabinMiller素性检测法198

14.2.2SolovagStrassen素性检测法199

14.2.3Lehmann素性检测法201

14.2.4AKS素性检测法202

14.3大数运算203

14.3.1大数运算的基本方法203

14.3.2基于32位进制的大数运算方法203

14.4RSA公钥密码算法原理208

14.5RSA公钥加密算法实现209

14.5.1大数运算的实现209

14.5.2素性检测的实现230

14.5.3RSA算法的实现234

14.5.4RSA加密算法测试238

14.6习题与实践题239

14.6.1习题239

14.6.2实践题239

第15章DiffieHellman密钥交换算法243

15.1DiffieHellman算法原理243

15.1.1DiffieHellman密钥交换算法基础243

15.1.2DiffieHellman密钥交换算法计算过程244

15.2DiffieHellman算法实现246

15.2.1生成素数p248

15.2.2本原根的生成249

15.2.3密钥生成251

15.2.4DiffieHellman算法测试253

15.3习题与实践题254

15.3.1习题254

15.3.2实践题254

第16章Elgamal加密算法255

16.1Elgamal加密算法原理255

16.2Elgamal加密算法实现256

16.2.1密钥的生成与解密的实现256

16.2.2加密的实现262

16.2.3算法测试265

16.3习题与实践题267

16.3.1习题267

16.3.2实践题267

第4部分散 列 函 数

第17章MD4算法与MD5算法271

17.1散列算法基础271

17.1.1散列算法的基本概念271

17.1.2散列算法的使用方法273

17.2MD4算法原理275

17.3MD4算法实现278

17.3.1MD4算法实现的基本结构278

17.3.2数据初始化280

17.3.3辅助函数的实现281

17.3.4哈希值计算过程的实现284

17.3.5测试与输出287

17.4MD5算法原理289

17.5MD5算法实现291

17.5.1MD5算法实现的基本结构291

17.5.2数据初始化293

17.5.3辅助函数的实现293

17.5.4哈希值计算过程的实现295

17.5.5测试与输出297

17.6习题与实践题298

17.6.1习题298

17.6.2实践题298

第18章SHA1算法299

18.1SHA1算法原理299

18.2SHA1算法实现302

18.2.1SHA1算法实现的基本结构302

18.2.2数据初始化303

18.2.3哈希值计算过程的实现305

18.2.4测试与输出309

18.3习题与实践题310

18.3.1习题310

18.3.2实践题310

第19章RIPEMD160算法311

19.1RIPEMD160算法原理311

19.2RIPEMD160算法实现314

19.2.1RIPEMD160算法实现的基本结构314

19.2.2数据初始化316

19.2.3辅助函数的实现317

19.2.4哈希值计算过程的实现320

19.2.5测试与输出325

19.3习题与实践题327

19.3.1习题327

19.3.2实践题327

第5部分数 字 签 名

第20章数字签名331

20.1数字签名概述331

20.2RSA数字签名方案332

20.3Elgamal数字签名方案333

20.4DSA数字签名方案335

20.5盲签名337

20.5.1盲签名基本原理337

20.5.2RSA盲签名338

20.6习题与实践题338

20.6.1习题338

20.6.2实践题339

参考文献340

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个