-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Windows C/C++加密解密實戰

( 簡體 字)
作者:朱晨冰 李建英類別:1. -> 程式設計 -> C -> C
   2. -> 程式設計 -> C++ -> C++
   3. -> 安全 -> 加密與解密
譯者:
出版社:清華大學出版社Windows C/C++加密解密實戰 3dWoo書號: 54545
詢問書籍請說出此書號!

缺書
NT售價: 645

出版日:6/1/2021
頁數:530
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787302578215
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

隨著計算機及網絡技術的發展,信息安全,特別是各行各業信息系統的安全成為社會關注的焦點,直接影響國家的安全和社會的穩定。
信息安全技術是核心技術中的核心。信息安全,大到國防安全,小到個人銀行賬號,一出事對國家和個人都是大事。網絡世界黑白難分,暗礁險灘出入相隨,保護信息安全是每個IT人員必須重視的課題,一定要保證所開發的信息系統是安全的,經得起攻擊。作為一個IT人,無論你是在Linux下開發,還是在Windows下開發,無論是用C/C++開發,還是Java開發,或者用C#開發,都應該掌握信息安全技術,這項技術就像我們大學學習的數據結構、離散數學那樣,是任何信息系統的基礎。舉一個簡單的例子,你在開發一個信息管理系統,總不能把用戶的登錄口令以明文的方式保存在數據庫中吧。
C/C++語言作為當今世界主流的開發語言,使用十分廣泛,而關于C/C++加解密方面的圖書寥寥無幾,而且現有的只是對基本的函數進行介紹,并沒有深入算法原理。也就是讀者看了,只知道這樣用,而不理解為何這樣用。學習信息安全技術,不先從原理上來理解其本質,是開發不出安全的系統來的。
為何要寫一本密碼書?答案是市面上的密碼書實在太學院派或太工程派。本書不同于以往的密碼書,很多學院派的密碼書對許多常用或不常用的密碼算法只是蜻蜓點水、淺嘗輒止地介紹,而沒有進行上機的代碼實現,讓學生看了似懂非懂。而實踐派的密碼書從頭到尾只是幾個業界算法庫的函數介紹,然后調用,接著就結束了,讓學生看了只知其然,而不知其所以然。
本書來自于擁有幾十年經驗的密碼開發工程師一手資料,知道哪些算法是重要并且常用的,瞄準這幾個常用的算法(本書全方面地從理論到實現介紹SM2/SM3/SM4算法),循序漸進(甚至從小學數學講起),詳細地介紹其原理,到自主實現,再到業界庫的調用(工作中必定會碰到,一定要在找工作之前學習),對于有理解難點的地方會重點介紹。通過本書,讀者不僅能理解原理,還能自己上機實現,還可以熟練調用業界知名算法庫,做到從理論到實踐的全線精通,這一點是市面上99%的密碼書都無法做到的。可以說,學完本書,立即上崗,毫無壓力!
本書首先從各大主流加解密算法的原理入手,然后用C/C++語言手工實現該算法(這是理解算法理論的必要過程),最后從C/C++提供的主流加解密框架和函數庫入手熟悉其使用。記住,會使用函數庫是最基本的技能,真正的專家是要會設計和實現算法庫,因為很多場合,尤其是國防軍工領域,很多敏感的、需要高性能的地方都要自己實現加解密算法,而不能照搬別人的函數庫,所以不理解原理是不可以的。C/C++作為信息系統開發的主流語言,其信息安全需求十分旺盛,在C/C++開發的信息系統中,熟練運用信息安全技術迫在眉睫。
作者長期工作在信息安全開發一線,有著較為豐富的密碼算法使用經驗,經常使用各種算法來保護數據安全,自己平時也積累了不少技術心得和開發經驗,但這些技術比較零散,系統性不強,借此機會,將這些內容整理成一個完整的系統,并且將所涉及的技巧和方法講述出來,是一件很榮幸的事。作者所做的工作來源于長期的實踐,對于密碼安全的開發技巧都從基本的內容講起,然后稍微提高,所以本書可以說是“貼近實戰”。軟件開發是一門需要實踐的技術,本書對理論盡量用簡單易懂的語言介紹,然后配合相應的實例,避免空洞的說教,對于其中的技術細節,都盡量講深、講透,為讀者提供翔實可靠的技術資料。
實踐反復告訴我們,只有把關鍵核心技術掌握在自己手中,才能從根本上保障國家經濟安全、國防安全和其他安全。作為一名老工程師,真心希望每個IT從業者都能靜下心來學一學密碼學。
密碼學在信息技術應用中占有重要的地位,國家也日益重視信息安全,密碼技術成為開發者經常會碰到的問題。針對當前密碼學領域的書,要么理論太枯燥,要么太簡單籠統,無法應對一線實戰開發的情況,因此就有了這么一本面對初中級程序員的密碼學開發方面的書。很多人學習密碼學主要是應用密碼算法來保護數據安全,實際開發過程中也是如此,所以學習密碼學的度很有講究,太深沒必要,太淺沒什么用。本書在學習深度方面也經過了仔細斟酌。
源碼下載與技術支持
本書示例源碼請掃描下面的二維碼下載,也可按頁面提示轉發到自己的郵箱中下載。由于寫作時間緊迫,書中疏漏之處在所難免,讀者若有疑問、建議和意見,可以加作者技術支持QQ或者發送郵件聯系作者(QQ、郵箱參見下載資源),郵件主題為“Windows C/C++加密解密實戰”,在此表示感謝。


作 者
2021年1月
內容簡介:

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

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