注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)信息系統(tǒng)Windows C/C++加密解密實戰(zhàn)

Windows C/C++加密解密實戰(zhàn)

Windows C/C++加密解密實戰(zhàn)

定 價:¥129.00

作 者: 朱晨冰,李建英 著
出版社: 清華大學(xué)出版社
叢編項:
標(biāo) 簽: 暫缺

ISBN: 9787302578215 出版時間: 2021-05-01 包裝: 平裝
開本: 16開 頁數(shù): 528 字?jǐn)?shù):  

內(nèi)容簡介

  本書詳解Windows加解密算法的原理及其實現(xiàn)技術(shù),內(nèi)容安排首先從各大主流加解密算法的原理入手,然后用C/C++語言自主實現(xiàn)這些算法,最后從C/C++提供的主流加解密框架和函數(shù)庫入手講解其使用方法。 本書分為14章,內(nèi)容包括密碼學(xué)概述、搭建C和C++密碼開發(fā)環(huán)境、對稱密碼算法、雜湊函數(shù)和HMAC、密碼學(xué)中常見的編碼格式、非對稱算法RSA的加解密、數(shù)字簽名技術(shù)、橢圓曲線密碼體制ECC、CSP和CryptoAPI、身份認(rèn)證和PKI理論基礎(chǔ)、實戰(zhàn)PKI、SSL-TLS編程、SM2算法的數(shù)學(xué)基礎(chǔ)、SM2算法的實現(xiàn)。 本書適合用于C/C++初中級開發(fā)人員自學(xué)密碼開發(fā)技術(shù),也適合高等院校和培訓(xùn)機構(gòu)相關(guān)專業(yè)的師生教學(xué)參考。

作者簡介

  朱晨冰,朱文偉的筆名,名校計算機專業(yè)統(tǒng)招碩士,20年C\\C++、Java開發(fā)經(jīng)驗。主導(dǎo)開發(fā)過密碼、圖形、人工智能等產(chǎn)品。精通Linux、Windows系統(tǒng)開發(fā)及數(shù)據(jù)庫開發(fā)技術(shù)。著有圖書《Windows C/C++加密解密實戰(zhàn)》《密碼學(xué)原理與Java實現(xiàn)》《Linux C與C++ 一線開發(fā)實踐》《Visual C++2017從入門到精通》。

圖書目錄

第1章  密碼學(xué)概述 1
1.1  瑪麗女王的密碼 1
1.2  密碼學(xué)簡史 5
1.3  密碼學(xué)的基本概念 7
1.3.1  基本概念 7
1.3.2  密碼學(xué)要解決的5大問題 7
1.3.3  密碼學(xué)中的五元組 8
1.3.4  加解密算法的分類 8
第2章  搭建C和C 密碼開發(fā)環(huán)境 9
2.1  密碼編程的兩個重要的國際庫 9
2.2  C/C 密碼庫OpenSSL 9
2.2.1  OpenSSL源代碼模塊結(jié)構(gòu) 10
2.2.2  OpenSSL加密庫調(diào)用方式 10
2.2.3  OpenSSL支持的對稱加密算法 11
2.2.4  OpenSSL支持的非對稱加密算法 11
2.2.5  OpenSSL支持的信息摘要算法 12
2.2.6  OpenSSL密鑰和證書管理 12
2.2.7  面向?qū)ο笈cOpenSSL 12
2.2.8  BIO接口 14
2.2.9  EVP接口 15
2.2.10  關(guān)于版本和操作系統(tǒng) 16
2.2.11  在Windows下編譯OpenSSL 1.1.1 16
2.2.12  在Windows下編譯OpenSSL 1.0.2m 30
2.2.13  在Linux下編譯安裝OpenSSL 1.0.2 38
2.2.14  測試使用openssl命令 47
2.3  純C 密碼開發(fā)Crypto 庫 49
2.3.1  Crypto 的編譯 50
2.3.2  使用Cypto 進(jìn)行AES加解密 50
2.4  國產(chǎn)密碼開發(fā)庫GmSSL 52
2.4.1  GmSSL的特點 52
2.4.2  GmSSL的一些歷史 52
2.4.3  什么是國密算法 53
2.4.4  GmSSL的下載 53
2.4.5  在Windows下編譯安裝GmSSL 54
2.4.6  在Linux下編譯安裝GmSSL 57
2.4.7  默認(rèn)編譯安裝GmSSL 61
2.4.8  在老版本的Linux下編譯安裝GmSSL 64
第3章  對稱密碼算法 68
3.1  基本概念 68
3.2  對稱加解密算法的分類 69
3.3  流加密算法 69
3.3.1  基本概念 69
3.3.2  流密碼和分組密碼的比較 70
3.3.3  RC4算法 71
3.4  分組加密算法 81
3.4.1  工作模式 81
3.4.2  短塊加密 85
3.4.3  DES和3DES算法 86
3.4.4  SM4算法 104
3.5  利用OpenSSL進(jìn)行對稱加解密 120
3.5.1  基本概念 120
3.5.2  對稱加解密相關(guān)函數(shù) 121
第4章  雜湊函數(shù)和HMAC 131
4.1  雜湊函數(shù)概述 131
4.1.1  什么是雜湊函數(shù) 131
4.1.2  密碼學(xué)和雜湊函數(shù) 131
4.1.3  雜湊函數(shù)的發(fā)展 132
4.1.4  雜湊函數(shù)的設(shè)計 132
4.1.5  雜湊函數(shù)的分類 133
4.1.6  雜湊函數(shù)的碰撞 133
4.2  SM3雜湊算法 134
4.2.1  常量和函數(shù) 134
4.2.2  填充 135
4.2.3  迭代壓縮 135
4.2.4  雜湊值 136
4.2.5  一段式SM3算法的實現(xiàn) 137
4.2.6  三段式SM3雜湊的實現(xiàn) 141
4.2.7  OpenSSL實現(xiàn)SM3算法 151
4.3  HMAC 155
4.3.1  什么是HMAC 155
4.3.2  產(chǎn)生背景 155
4.3.3  設(shè)計目標(biāo) 156
4.3.4  算法描述 156
4.3.5  獨立自主實現(xiàn)HMAC-SM3 157
4.4  SHA系列雜湊算法 160
4.4.1  SHA算法概述 160
4.4.2  SHA的發(fā)展史 161
4.4.3  SHA系列算法的核心思想和特點 161
4.4.4  單向性 161
4.4.5  主要用途 161
4.4.6  SHA256算法原理解析 161
4.4.7  SHA384和SHA512算法 177
4.5  更通用的基于OpenSSL的哈希運算 204
4.5.1  獲取摘要算法函數(shù)EVP_get_digestbyname 205
4.5.2  創(chuàng)建結(jié)構(gòu)體并初始化函數(shù)EVP_MD_CTX_create 205
4.5.3  銷毀摘要上下文結(jié)構(gòu)體EVP_MD_CTX_destroy 206
4.5.4  摘要初始化函數(shù)EVP_DigestInit_ex 206
4.5.5  摘要更新函數(shù)EVP_DigestUpdate 206
4.5.6  摘要結(jié)束函數(shù)EVP_Digest_Final_ex 207
4.5.7  單包摘要計算函數(shù)EVP_Digest 207
第5章  密碼學(xué)中常見的編碼格式 210
5.1  Base64編碼 210
5.1.1  Base64編碼的由來 210
5.1.2  Base64的索引表 210
5.1.3  Base64的轉(zhuǎn)化原理 211
5.1.4  使用OpenSSL的base64命令 213
5.1.5  編程實現(xiàn)Base64編解碼 214
5.2  PEM文件 217
5.2.1  什么是PEM文件 217
5.2.2  生成一個PEM文件 219
5.3  ASN.1和BER、DER 220
5.3.1  ASN.1的歷史 220
5.3.2  ASN.1的基本概念 221
5.3.3  ASN.1和ASN.1編碼規(guī)則在OSI中的應(yīng)用 222
5.3.4  電子商務(wù)中ASN.1和DER編碼的應(yīng)用 223
5.3.5  ASN的優(yōu)點 223
5.3.6  ASN.1的文法描述 224
5.3.7  編碼規(guī)則 225
5.3.8  ASN.1實例 232
第6章  非對稱算法RSA的加解密 236
6.1  非對稱密碼體制概述 236
6.2  RSA概述 237
6.3  RSA的數(shù)學(xué)基礎(chǔ) 238
6.3.1  素數(shù)(質(zhì)數(shù)) 238
6.3.2  素性檢測 239
6.3.3  倍數(shù) 239
6.3.4  約數(shù) 239
6.3.5  互質(zhì)數(shù) 239
6.3.6  質(zhì)因數(shù) 240
6.3.7  強素數(shù) 240
6.3.8  因子 240
6.3.9  模運算 240
6.3.10  模運算的操作與性質(zhì) 241
6.3.11  單向函數(shù) 241
6.3.12  費馬定理和歐拉定理 243
6.3.13  冪 243
6.3.14  模冪運算 243
6.3.15  同余符號“≡” 243
6.3.16  歐拉函數(shù) 244
6.3.17  公約數(shù) 244
6.3.18  歐幾里得算法 244
6.3.19  擴展歐幾里得算法 246
6.4  RSA算法描述 254
6.5  RSA算法實例 256
6.5.1  查找法計算私鑰d 256
6.5.2  簡便法計算私鑰d 259
6.5.3  擴展歐幾里得算法計算私鑰d 260
6.5.4  加密字母 261
6.5.5  分組加密字符串 262
6.6  熟悉PKCS#1 266
6.6.1  PKCS#1填充 267
6.6.2  PKCS#1中的 RSA私鑰語法 271
6.7  在OpenSSL命令中使用RSA 272
6.7.1  生成RSA公私鑰 272
6.7.2  提取私鑰各參數(shù) 273
6.7.3  RSA公鑰加密一個文件 275
6.7.4  RSA私鑰解密一個文件 276
6.8  基于OpenSSL庫的RSA編程 276
6.8.1  OpenSSL的RSA實現(xiàn) 277
6.8.2  主要數(shù)據(jù)結(jié)構(gòu) 277
6.8.3  主要函數(shù) 278
6.9  隨機大素數(shù)的生成 287
6.10  RSA算法的攻擊及分析 287
6.10.1  因子分解攻擊 287
6.10.2  選擇密文攻擊 287
6.10.3  公共模數(shù)攻擊 288
6.10.4  小指數(shù)攻擊 288
第7章  數(shù)字簽名技術(shù) 289
7.1  概述 289
7.2  什么是數(shù)字簽名技術(shù) 291
7.2.1  簽名 291
7.2.2  數(shù)字簽名的基本概念 291
7.2.3  數(shù)字簽名的原理 292
7.2.4  數(shù)字簽名的一般性定義 292
7.2.5  數(shù)字簽名的分類 293
7.2.6  數(shù)字簽名的安全性 294
7.2.7  數(shù)字簽名的特征與應(yīng)用 295
7.3  RSA公鑰算法在數(shù)字簽名中的應(yīng)用 295
7.4  使用OpenSSL命令進(jìn)行簽名和驗簽 296
7.5  基于OpenSSL的簽名驗簽編程 298
7.5.1  直接使用RSA函數(shù)進(jìn)行簽名驗簽 298
7.5.2  使用EVP系列函數(shù)進(jìn)行簽名驗簽 304
第8章  橢圓曲線密碼體制 310
8.1  概述 310
8.1.1  信息安全技術(shù) 310
8.1.2  密碼體制 311
8.1.3  橢圓曲線密碼體制 311
8.1.4  為什么使用橢圓曲線密碼體制 313
8.2  背景基礎(chǔ)知識 313
8.2.1  無窮遠(yuǎn)點 314
8.2.2  射影平面坐標(biāo)系 314
8.2.3  域 316
8.2.4  數(shù)域 316
8.2.5  有限域 316
8.2.6  素數(shù)域 316
8.2.7  逆元 317
8.3  橢圓曲線的定義 318
8.4  密碼學(xué)中的橢圓曲線 321
8.5  ECC算法體系 326
8.5.1  有限域的模運算 327
8.5.2  橢圓曲線上的點加和倍點運算 328
8.5.3  標(biāo)量乘運算 333
8.5.4  數(shù)據(jù)加解密算法 336
第9章  CSP和CryptoAPI 350
9.1  什么是CSP 350
9.2  CryptoAPI簡介 350
9.3  CSP服務(wù)體系 351
9.4  CSP的組成 353
9.5  CryptoAPI體系結(jié)構(gòu) 353
9.6  CryptoAPI調(diào)用底層CSP服務(wù)方式 354
9.7  CrpytoAPI的基本功能 355
9.8  搭建CryptoAPI開發(fā)環(huán)境 356
9.9  基本加密函數(shù) 357
9.9.1  服務(wù)提供者函數(shù) 358
9.9.2  密鑰的產(chǎn)生和交換函數(shù) 363
9.9.3  編碼/解碼函數(shù) 364
9.9.4  數(shù)據(jù)加密/解密函數(shù) 364
9.9.5  哈希和數(shù)字簽名函數(shù) 364
第10章  身份認(rèn)證和PKI理論基礎(chǔ) 369
10.1  身份認(rèn)證概述 369
10.1.1  網(wǎng)絡(luò)安全與身份認(rèn)證 369
10.1.2  網(wǎng)絡(luò)環(huán)境下身份認(rèn)證所面臨的威脅 370
10.1.3  網(wǎng)絡(luò)身份認(rèn)證體系的發(fā)展現(xiàn)狀 371
10.2  身份認(rèn)證技術(shù)基礎(chǔ) 373
10.2.1  用戶名/密碼認(rèn)證 373
10.2.2  智能卡認(rèn)證 374
10.2.3  生物特征認(rèn)證 374
10.2.4  動態(tài)口令 374
10.2.5  USB Key認(rèn)證 375
10.2.6  基于沖擊響應(yīng)的認(rèn)證模式 375
10.2.7  基于數(shù)字證書PKI的認(rèn)證模式 375
10.3  PKI概述 376
10.3.1  PKI的國內(nèi)外應(yīng)用狀態(tài) 376
10.3.2  PKI的應(yīng)用前景 377
10.3.3  PKI存在的問題及發(fā)展趨勢 378
10.4  基于X.509證書的PKI認(rèn)證體系 380
10.4.1  數(shù)字證書 380
10.4.2  數(shù)字信封 383
10.4.3  PKI體系結(jié)構(gòu) 384
10.4.4  認(rèn)證機構(gòu) 387
10.4.5  基于X.509證書的身份認(rèn)證 388
第11章  實戰(zhàn)PKI 391
11.1  只有密碼算法是不夠的 391
11.2  OpenSSL實現(xiàn)CA的搭建 393
11.2.1  準(zhǔn)備實驗環(huán)境 393
11.2.2  熟悉CA環(huán)境 394
11.2.3  創(chuàng)建所需要的文件 396
11.2.4  CA 自簽名證書(構(gòu)造根CA) 396
11.2.5  根CA為子CA頒發(fā)證書 398
11.2.6  普通用戶向子CA申請證書 401
11.3  基于OpenSSL的證書編程 403
11.3.1  把DER編碼轉(zhuǎn)換為內(nèi)部結(jié)構(gòu)體函數(shù)d2i_X509 404
11.3.2  獲得證書版本函數(shù)X509_get_version 405
11.3.3  獲得證書序列號函數(shù)X509_get_serialNumber 405
11.3.4  獲得證書頒發(fā)者信息函數(shù)X509_get_issuer_name 405
11.3.5  獲得證書擁有者信息函數(shù)X509_get_subject_name 406
11.3.6  獲得證書有效期的起始日期函數(shù)X509_get_notBefore 406
11.3.7  獲得證書有效期的終止日期函數(shù)X509_get_notAfter 406
11.3.8  獲得證書公鑰函數(shù)X509_get_pubkey 406
11.3.9  創(chuàng)建證書存儲區(qū)上下文環(huán)境函數(shù)X509_STORE_CTX 407
11.3.10  釋放證書存儲區(qū)上下文環(huán)境函數(shù)X509_STORE_CTX_free 407
11.3.11  初始化證書存儲區(qū)上下文環(huán)境函數(shù)X509_STORE_CTX_init 407
11.3.12  驗證證書函數(shù)X509_verify_cert 407
11.3.13  創(chuàng)建證書存儲區(qū)函數(shù)X509_STORE_new 407
11.3.14  釋放證書存儲區(qū)函數(shù)X509_STORE_free 408
11.3.15  向證書存儲區(qū)添加證書函數(shù)X509_STORE_add_cert 408
11.3.16  向證書存儲區(qū)添加證書吊銷列表函數(shù)X509_STORE_add_crl 409
11.3.17  釋放X509結(jié)構(gòu)體函數(shù)X509_free 409
11.4  證書編程實戰(zhàn) 409
第12章  SSL-TLS編程 417
12.1  SSL協(xié)議規(guī)范 417
12.1.1  什么是SSL協(xié)議 417
12.1.2  SSL協(xié)議的優(yōu)點 417
12.1.3  SSL協(xié)議的發(fā)展 417
12.1.4  SSL v3/TLS提供的服務(wù) 418
12.1.5  SSL協(xié)議層次結(jié)構(gòu)模型 419
12.1.6  SSL記錄層協(xié)議 419
12.1.7  SSL握手協(xié)議層 421
12.2  OpenSSL中的SSL編程 424
12.3  SSL函數(shù) 425
12.3.1  初始化SSL算法庫函數(shù) SSL library_init 425
12.3.2  初始化SSL上下文環(huán)境變量函數(shù) SSL_CTX_new 425
12.3.3  釋放SSL上下文環(huán)境變量函數(shù)SSL_CTX_free 426
12.3.4  文件形式設(shè)置SSL證書函數(shù)SSL_CTX _use_certificate_file 426
12.3.5  結(jié)構(gòu)體方式設(shè)置SSL證書函數(shù)SSL_CTX_use_certificate 426
12.3.6  文件形式設(shè)置SSL私鑰函數(shù)SSL_CTX_use_PrivateKey_file 426
12.3.7  結(jié)構(gòu)體方式設(shè)置SSL私鑰函數(shù)SSL_CTX_use_PrivateKey 427
12.3.8  檢查SSL私鑰和證書是否匹配函數(shù)SSL_CTX_check_private_key 427
12.3.9  創(chuàng)建SSL結(jié)構(gòu)函數(shù)SSL_new 427
12.3.10  釋放SSL套接字結(jié)構(gòu)體函數(shù)SSL_free 427
12.3.11  設(shè)置讀寫套接字函數(shù)SSL_set_fd 427
12.3.12  設(shè)置只讀套接字函數(shù)SSL_set_rfd 428
12.3.13  設(shè)置只寫套接字函數(shù)SSL_set_wfd 428
12.3.14  啟動TLS/SSL握手函數(shù)SSL_connect 428
12.3.15  接受SSL連接函數(shù)SSL_accept 428
12.3.16  獲取對方的X509證書函數(shù)SSL_get_peer_certificate 428
12.3.17  向TLS/SSL連接寫數(shù)據(jù)函數(shù)SSL_write 429
12.3.18  從TLS/SSL連接中讀取數(shù)據(jù)函數(shù)SSL_Read 429
12.4  準(zhǔn)備SSL通信所需的證書 429
12.4.1  準(zhǔn)備實驗環(huán)境 429
12.4.2  熟悉CA環(huán)境 430
12.4.3  創(chuàng)建所需要的文件 430
12.4.4  創(chuàng)建根CA的證書 430
12.4.5  生成服務(wù)端的證書請求文件 432
12.4.6  簽發(fā)出服務(wù)端證書 432
12.4.7  生成客戶端的證書請求文件 433
12.4.8  簽發(fā)客戶端證書 434
12.5  實戰(zhàn)SSL網(wǎng)絡(luò)編程 435
第13章  SM2算法的數(shù)學(xué)基礎(chǔ) 444
13.1  素域Fp 444
13.1.1  素域Fp的定義 444
13.1.2  Fp上橢圓曲線的定義 445
13.1.3  Fp上橢圓曲線的階 447
13.2  二元擴域  447
13.2.1  二元擴域 的定義 447
13.2.2   上橢圓曲線的定義 451
13.2.3   上橢圓曲線的階 453
13.3  橢圓曲線多倍點運算 453
13.3.1  定義 453
13.3.2  橢圓曲線多倍點運算的實現(xiàn) 454
13.3.3  橢圓曲線多倍點運算復(fù)雜度估計 455
13.4  求解橢圓曲線離散對數(shù)問題的方法 456
13.4.1  橢圓曲線離散對數(shù)求解方法 456
13.4.2  安全橢圓曲線滿足的條件 457
13.5  橢圓曲線上點的壓縮 458
13.5.1  定義 458
13.5.2  Fp上橢圓曲線點的壓縮與解壓縮方法 458
13.5.3   上橢圓曲線點的壓縮與解壓縮方法 458
13.6  有限域和模運算 459
13.6.1  有限域中的指數(shù)運算 459
13.6.2  有限域中的逆運算 459
13.6.3  Lucas序列的生成 460
13.6.4  模素數(shù)平方根的求解 460
13.6.5  跡函數(shù)和半跡函數(shù) 461
13.6.6   上二次方程的求解 461
13.6.7  整數(shù)模素數(shù)階的檢查 462
13.6.8  整數(shù)模素數(shù)階的計算 462
13.6.9  模素數(shù)的階為給定值的整數(shù)的構(gòu)造 463
13.6.10  概率素性檢測 463
13.6.11  近似素性檢測 464
13.7  橢圓曲線算法 464
13.7.1  橢圓曲線階的計算 464
13.7.2  橢圓曲線上點的尋找 464
13.8  曲線示例 465
13.8.1  Fp上的橢圓曲線 465
13.8.2   上的橢圓曲線 466
13.9  橢圓曲線方程參數(shù)的擬隨機生成 467
13.9.1  Fp上橢圓曲線方程參數(shù)的擬隨機生成 467
13.9.2   上橢圓曲線方程參數(shù)的擬隨機生成 468
13.10  橢圓曲線方程參數(shù)的驗證 468
13.10.1  Fp上橢圓曲線方程參數(shù)的驗證 468
13.10.2   上橢圓曲線方程參數(shù)的驗證 469
第14章  SM2算法的實現(xiàn) 470
14.1  為何要推出SM2算法 470
14.2  SM2算法采用的橢圓曲線方程 471
14.3  SM2算法的用途 471
14.4  橢圓曲線密碼體制的不足 471
14.5  橢圓曲線的研究熱點 472
14.6  SM2算法中的有限域 473
14.6.1  素域Fq 473
14.6.2  二元擴域  473
14.7  有限域上的橢圓曲線 473
14.7.1  Fp上的橢圓曲線 474
14.7.2   上的橢圓曲線 474
14.8  橢圓曲線系統(tǒng)參數(shù)及其驗證 474
14.8.1  一般要求 474
14.8.2  Fp上橢圓曲線系統(tǒng)參數(shù)及其驗證 474
14.8.3   上橢圓曲線系統(tǒng)參數(shù)及其驗證 475
14.9  密鑰對的生成 476
14.10  公鑰的驗證 477
14.10.1  Fp上橢圓曲線公鑰的驗證 477
14.10.2   上橢圓曲線公鑰的驗證 477
14.11  MIRACL庫入門 477
14.11.1  獲取MIRACL 478
14.11.2  生成靜態(tài)庫并測試 478
14.12  SM2加解密算法 481
14.12.1  算法參數(shù) 481
14.12.2  輔助函數(shù) 481
14.12.3  加密算法及流程 482
14.12.4  解密算法及流程 483
14.12.5  橢圓曲線消息加解密示例 484
14.12.6  用代碼實現(xiàn)SM2加解密算法 489
14.13  SM2數(shù)字簽名 508
14.13.1  算法參數(shù) 508
14.13.2  輔助函數(shù) 509
14.13.3  數(shù)字簽名的生成算法及流程 509
14.13.4  數(shù)字簽名的驗證算法及流程 510
14.13.5  數(shù)字簽名與驗證示例 511
14.13.6  用代碼實現(xiàn)SM2簽名驗簽算法 517

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號