《密碼編碼與信息安全——C++實踐》是2015年清華大學出版社出版的書籍,作者是王靜文、吳曉藝。
基本介紹
- 書名:密碼編碼與信息安全——C++實踐
- 作者:王靜文、吳曉藝
- ISBN:9787302394112
- 定價:49
- 出版社:清華大學出版社
- 出版時間:2015.06.01
內容提要,前言,內容提要,錯誤,編程環境,致謝,目錄,
內容提要
本書可以作為信息安全、信息與計算科學、計算機科學技術、通信工程等專業的本科生教材,也可以為從事信息安全、通信、電子工程等領域的技術人員提供參考。
前言
1.目的/目標
在密碼編碼與信息安全的教學與學習過程中,大多以理論教學為主,缺少實踐教學,從而對所學的理論難以有較為深入的理解。本書重在以實踐幫助讀者理解密碼編碼與信息安全的基本原理。
本書主要討論密碼編碼學與信息安全的基本原理,並以基本原理為基礎,重在探討C++的實現方法。通過逐步引導的方法,分析密碼編碼和信息安全的功能,並針對相應的功能採用C++語言加以實現。幫助讀者掌握和理解密碼編碼與信息安全的原理,並將理論與實踐有機結合,為對密碼編碼和信息安全有興趣的讀者提供參考。
2.預備知識要求
本書主要講述密碼編碼與信息安全的基本原理與實現方法,讀者需有基本的C++語言知識,並能夠編寫簡單的應用程式。若有基本的密碼編碼與信息安全的知識,則更有利於掌握書中的內容。
3.學習方法
本書是以實踐為主,幫助理解密碼編碼與信息安全的基本原理,從原理出發來分析和完成具體的實現方法與過程是理想的學習方法,切忌複製或抄襲代碼,理解後獨立完成相關實踐內容,不僅有助於理解密碼編碼的原理,更有助於將理論轉化為實踐。
在本書的撰寫過程中,每一部分的原理都通過分析和實踐來完成,同時,將複雜的問題儘可能簡化到易於理解,便於實現。讀者在學習過程中,可以參考分解問題的方法,提高解決問題的能力。同時在程式設計過程中最好對各項功能進行單獨測試,避免在總體完成後增大查找程式存在問題的複雜性。
內容提要
本書共分為古典密碼、現代對稱密碼、公鑰密碼算法、散列函式和數字簽名五個部分,在古典密碼中介紹了單表代替密碼、移位密碼、多表代替密碼等古典密碼算法。在現代對稱密碼中介紹了SDES算法、DES算法、AES算法、IDEA算法、Blowfish算法和CAST128等多種算法。在公鑰密碼算法中介紹了大數運算基本原理與實現方法、RSA算法、DiffieHellman算法、Elgamal算法等。在散列函式中介紹了MD4、MD5和SHA1等算法。在數字簽名中介紹了RSA數字簽名方案、Elgamal數字簽名方案和DSA數字簽名方案等。並對書中出現的各種算法均給出了C++的具體實現5.教學安排
本書作為教材可以根據教學學時安排具體內容,對於課時在60學時左右的教學計畫可以選擇大部分內容作為課程教學內容,對於課時在40學時左右的教學計畫可以根據需要進行選擇。例如:在第2部分內容中可以按照分類各選擇一種算法作為教學內容,其中RC算法包含RC4、RC5和RC6算法,教學過程中則可以選擇部分內容進行講解,其餘部分則可以作為教學參考。同樣第4部分的散列算法也可以選擇部分內容進行教學,算法細節不同,但基本結構有不少是相似的。
錯誤
無論作者有多少發現錯誤的技巧,總有一些錯誤漏網,而讀者往往最能發現錯誤,如果讀者發現任何認為是錯誤的地方,請提出糾正建議,我們會非常感謝讀者的幫助。
編程環境
本書中的所有示例均採用G++編譯器進行編譯,編程環境為Code∷Blocks,保證了在Windows環境或Linux環境的兼容性。若讀者在Windows環境中使用VC進行處理,需做相應的修改以適應VC的編譯器。
致謝
本書在撰寫過程中得到很多人的支持和幫助,特別要感謝何立國教授,對書中許多有關數學知識與相關證明的地方給出了很多寶貴的建議,使得本書更加完善。
編者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章SDES算法35
3.1SDES算法原理35
3.2SDES密鑰的生成35
3.3SDES加密與解密過程36
3.4SDES算法實現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章CAST128算法119
8.1CAST128算法原理119
8.1.1CAST128算法的加密過程119
8.1.2CAST128算法的子密鑰生成120
8.2CAST128算法實現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.1RabinMiller素性檢測法198
14.2.2SolovagStrassen素性檢測法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章DiffieHellman密鑰交換算法243
15.1DiffieHellman算法原理243
15.1.1DiffieHellman密鑰交換算法基礎243
15.1.2DiffieHellman密鑰交換算法計算過程244
15.2DiffieHellman算法實現246
15.2.1生成素數p248
15.2.2本原根的生成249
15.2.3密鑰生成251
15.2.4DiffieHellman算法測試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章SHA1算法299
18.1SHA1算法原理299
18.2SHA1算法實現302
18.2.1SHA1算法實現的基本結構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章RIPEMD160算法311
19.1RIPEMD160算法原理311
19.2RIPEMD160算法實現314
19.2.1RIPEMD160算法實現的基本結構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