買這商品的人也買了...
- 
                
                   工程數學(二): 常微分方程式、特殊函數暨 Laplace 轉換(修訂版) 工程數學(二): 常微分方程式、特殊函數暨 Laplace 轉換(修訂版)$480$470
- 
                
                   網路安全與密碼學概論 (Cryptography and network security) 網路安全與密碼學概論 (Cryptography and network security)$750$713
- 
                
                   Linux Device Driver Programming 驅動程式設計 Linux Device Driver Programming 驅動程式設計$690$587
- 
                
                   快快樂樂學 Excel 2013─善用資料圖表、函數巨集的精算達人 快快樂樂學 Excel 2013─善用資料圖表、函數巨集的精算達人$450$356
- 
                
                   嗯!Office 2013 我也會─超實用的活動 DM X 財會營收 X 銷售分析 X 互動影音 X 雲端協同範例即上手 嗯!Office 2013 我也會─超實用的活動 DM X 財會營收 X 銷售分析 X 互動影音 X 雲端協同範例即上手$480$374
- 
                
                   精通 Python|運用簡單的套件進行現代運算 (Introducing Python: Modern Computing in Simple Packages) 精通 Python|運用簡單的套件進行現代運算 (Introducing Python: Modern Computing in Simple Packages)$780$616
- 
                
                   完整學會 Git, GitHub, Git Server 的24堂課 完整學會 Git, GitHub, Git Server 的24堂課$360$284
- 
                
                   職業駭客的告白 : 軟體反組譯、木馬病毒與入侵翻牆竊密 職業駭客的告白 : 軟體反組譯、木馬病毒與入侵翻牆竊密$620$484
- 
                
                   $474深度學習 : 21天實戰 Caffe $474深度學習 : 21天實戰 Caffe
- 
                
                   CSS: The Missing Manual, 4/e (國際中文版) CSS: The Missing Manual, 4/e (國際中文版)$680$537
- 
                
                   Python 函式庫語法範例字典 Python 函式庫語法範例字典$450$356
- 
                
                   網站擷取|使用 Python (Web Scraping with Python: Collecting Data from the Modern Web) 網站擷取|使用 Python (Web Scraping with Python: Collecting Data from the Modern Web)$580$458
- 
                
                   新觀念 Microsoft Visual C# 程式設計範例教本, 4/e 新觀念 Microsoft Visual C# 程式設計範例教本, 4/e$580$493
- 
                
                   圖解密碼學與比特幣原理 圖解密碼學與比特幣原理$580$458
- 
                
                   Python 自動化的樂趣|搞定重複瑣碎 & 單調無聊的工作 (中文版) (Automate the Boring Stuff with Python: Practical Programming for Total Beginners) Python 自動化的樂趣|搞定重複瑣碎 & 單調無聊的工作 (中文版) (Automate the Boring Stuff with Python: Practical Programming for Total Beginners)$500$425
- 
                
                   Android App 程式設計教本之無痛起步 -- 使用 Android Studio 2.X 開發環境 Android App 程式設計教本之無痛起步 -- 使用 Android Studio 2.X 開發環境$580$458
- 
                
                   寫程式前就該懂的演算法 ─ 資料分析與程式設計人員必學的邏輯思考術 (Grokking Algorithms: An illustrated guide for programmers and other curious people) 寫程式前就該懂的演算法 ─ 資料分析與程式設計人員必學的邏輯思考術 (Grokking Algorithms: An illustrated guide for programmers and other curious people)$390$308
- 
                
                   Python 初學特訓班 (增訂版) (附250分鐘影音教學/範例程式) Python 初學特訓班 (增訂版) (附250分鐘影音教學/範例程式)$480$379
- 
                
                   $796深度學習 $796深度學習
- 
                
                   Deep Learning|用 Python 進行深度學習的基礎理論實作 Deep Learning|用 Python 進行深度學習的基礎理論實作$580$458
- 
                
                   演算法圖鑑:26種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用 step by step 全圖解 演算法圖鑑:26種演算法 + 7種資料結構,人工智慧、數據分析、邏輯思考的原理和應用 step by step 全圖解$450$356
- 
                
                   $570密碼編碼學與網絡安全:原理與實踐, 7/e $570密碼編碼學與網絡安全:原理與實踐, 7/e
- 
                
                   人工智能基礎 (高中版) 人工智能基礎 (高中版)$210$200
- 
                
                   區塊鏈智慧合約開發與安全防護實作 區塊鏈智慧合約開發與安全防護實作$480$408
- 
                
                   深度學習入門教室:6堂基礎課程 + Python 實作練習,Deep Learning、人工智慧、機器學習的理論和應用全圖解 深度學習入門教室:6堂基礎課程 + Python 實作練習,Deep Learning、人工智慧、機器學習的理論和應用全圖解$550$495
商品描述
<內容簡介>
Python是一種高級程序設計語言,因其簡潔、易讀及可擴展性日漸成為程序設計領域備受推崇的語言。同時,Python語言在算法領域也得到了很好的應用。
本書通過理論和實例相結合的方式介紹了多種加密算法。全書共分24章,由淺入深地介紹了與密碼學編程相關的各類基礎知識、編程技巧以及算法實現。除此之外,本書還提供了相應的源碼下載資源,以供讀者更好地進行探索和學習。
本書適合Python初學者和密碼學的初學者,也適合信息安全從業人員。
<章節目錄>
第1章製作紙質加密工具1 
1.1密碼學是什麼1 
1.2代碼與加密法2 
1.3製作紙質加密輪盤2 
1.4虛擬加密輪盤4 
1.5如何使用加密輪盤加密4 
1.6如何使用加密輪盤解密5 
1.7另一個加密法工具:St. Cyr滑條6 
1.8 A組練習6 
1.9不用紙質工具做加密7 
1.10 B組練習9 
1.11雙重強度加密9 
1.12通過計算機編程進行加密9 
第2章Pygame基礎知識11 
2.1下載和安裝Python 11 
2.1.1 Windows安裝步驟11 
2.1.2 OS X安裝步驟12 
2.1.3 Ubuntu和Linux安裝步驟12 
2.2下載pyperclip.py 12 
2.3啟動IDLE 12 
2.4特色程序13 
2.5行號和空格14 
2.6本書的文本換行14 
2.7在線跟蹤程序15 
2.8使用在線比較工具檢查輸入的
代碼15 
2.9複製粘貼文本15 
2.10更多信息鏈接15 
2.11編程和密碼學16 
第3章Interactive Shell 20 
3.1一些簡單的數學知識20 
3.2整數和浮點數21 
3.3表達式21 
3.4運算符順序22 
3.5計算表達式22 
3.6錯誤是可以接受的22 
3.7 A組練習23 
3.8每個值都有一個數據類型23 
3.9通過賦值語句把值存到變量裡23 
3.10重寫變量24 
3.11使用多個變量25 
3.12變量名26 
3.13駝峰式大小寫26 
3.14 B組練習26 
3.15總結——那我們什麼時候開始
破譯26 
第4章字符串和寫程序28 
4.1字符串28 
4.2使用+運算符的字符串連接29 
4.3使用*運算符的字符串複製30 
4.4使用print()函數輸出值30 
4.5轉義字符31 
4.6引號和雙引號32 
4.7 A組練習32 
4.8索引操作33 
4.9負索引33 
4.10分片操作34 
4.11空分片索引35 
4.12 B組練習35 
4.13在IDLE的文件編輯器裡寫程序35 
4.14 Hello World! 36 
4.15 Hello World的源代碼36 
4.16保存你的程序37 
4.17運行你的程序37 
4.18打開你保存的程序38 
4.19 “Hello World”程序如何工作38 
4.20註釋38 
4.21函數39 
4.22 print()函數39 
4.23 input()函數39 
4.24結束程序40 
4.25 C組練習40 
4.26總結40 
第5章反轉加密41 
5.1反轉加密41 
5.2反轉加密程序的源代碼41 
5.3運行反轉加密程序42 
5.4用在線比較工具檢查你的源代碼42 
5.5這個程序如何工作43 
5.6 len()函數43 
5.7 while循環簡介44 
5.8布爾數據類型44 
5.9比較運算符45 
5.10條件46 
5.11代碼塊47 
5.12 while循環語句47 
5.13 “增長”一個字符串48 
5.14一步一步跟蹤程序50 
5.15在我們的程序裡使用input() 52 
5.16 A組練習52 
5.17總結52 
第6章凱撒加密法53 
6.1實現程序53 
6.2凱撒加密程序的源代碼53 
6.3運行凱撒加密程序54 
6.4使用在線比較工具檢查你的
源代碼55 
6.5 A組練習55 
6.6這個程序如何工作55 
6.7使用import語句導入模塊55 
6.8常量56 
6.9 upper()和lower()字符串方法57 
6.10 for循環語句58 
6.11相當於for循環的while循環59 
6.12 B組練習59 
6.13 if語句59 
6.14 else語句60 
6.15 elif語句60 
6.16 in和not in運算符61 
6.17 find()字符串方法62 
6.18 C組練習62 
6.19回到代碼62 
6.20顯示和復制加密/解密之後的
字符串64 
6.21加密非字母字符65 
6.22總結66 
第7章暴力破譯凱撒加密法67 
7.1破譯加密67 
7.2暴力破譯67 
7.3凱撒加密法破譯程序的源代碼68 
7.4運行凱撒加密法破譯程序68 
7.5這個程序如何工作69 
7.6 range()函數69 
7.7回到代碼70 
7.8字符串格式化72 
7.9 A組練習72 
7.10總結72 
第8章使用換位加密法加密73 
8.1換位加密法73 
8.2 A組練習74 
8.3換位加密法加密程序74 
8.4換位加密法加密程序的源代碼75 
8.5運行換位加密法加密程序76 
8.6這個程序如何工作76 
8.7使用def語句創建你自己的函數76 
8.8程序的main ()函數77 
8.9形參78 
8.10對形參的修改只存在於函數
之內79 
8.11全局作用域和本地作 用域裡的
變量79 
8.12 global語句79 
8.13 B組練習81 
8.14列表數據類型81 
8.15使用list ()函數把區間對象轉換
成列表82 
8.16重新賦值列表裡的項83 
8.17重新賦值字符串裡的字符83 
8.18列表的列表83 
8.19 C組練習84 
8.20在列表上使用len()和in運算符84 
8.21使用+和*運算符的列表連接和
復制85 
8.22 D組練習85 
8.23換位加密算法85 
8.24增強賦值運算符88 
8.25回到代碼88 
8.26 join()字符串方法90 
8.27返回值和return語句91 
8.28 E組練習91 
8.29回到代碼91 
8.30特殊的__name__變量92 
8.31密鑰的大小和消息的長度93 
8.32總結93 
第9章使用換位加密法解密94 
9.1在紙上使用換位加密法解密94 
9.2練習A組96 
9.3換位加密法解密程序96 
9.4換位加密法解密程序的源代碼96 
9.5這個程序如何工作97 
9.6 math.ceil()、math.floor()和round()函數98 
9.7 and和or布爾運算符101 
9.8 B組練習102 
9.9真值表102 
9.10 and和or運算符可以簡化代碼103 
9.11布爾運算符的運算順序103 
9.12回到代碼103 
9.13 C組練習105 
9.14總結105 
第10章寫一個程序測試我們的程序106 
10.1換位加密法測試程序的源代碼106 
10.2運行換位加密法測試程序107 
10.3這個程序如何工作108 
10.4偽隨機數和random.seed() 
函數108 
10.5 random .randint()函數109 
10.6引用110 
10.7 copy.deepcopy()函數112 
10.8 A組練習112 
10.9 random.shuffle()函數112 
10.10隨機打亂一個字符串113 
10.11回到代碼114 
10.12 sys.exit()函數114 
10.13測試我們的測試程序115 
10.14總結116 
第11章加密和解密文件117 
11.1純文本文件117 
11.2換位加密法文件加密程序的
源代碼118 
11.3運行換位加密法文件加密程序120 
11.4讀取文件120 
11.4.1 open()函數和文件對象120 
11.4.2 read()文件對象方法120 
11.4.3 close()文件對象方法121 
11.5寫入文件121 
11.5.1 write()文件對象方法122 
11.6這個程序如何工作122 
11.7 os.path.exists()函數123 
11.8 startswith()和endswith()字符串方法123 
11.9 title()字符串方法124 
11.10 time模塊和time.time()函數125 
11.11回到代碼126 
11.12 A組練習126 
11.13總結127 
第12章通過編程檢測英文128 
12.1計算機如何理解英文128 
12.2 A組練習130 
12.3檢測英文模塊130 
12.4檢測英文模塊的源代碼130 
12.5這個程序如何工作131 
12.6詞典和詞典數據類型132 
12.7添加或修改詞典裡的項132 
12.8 B組練習133 
12.9在詞典上使用len()函數133 
12.10在詞典上使用in運算符133 
12.11在詞典上使用for循環134 
12.12 C組練習134 
12.13詞典與列表之間的區別134 
12.14在詞典上查找項比在列表上
更快135 
12.15 split()方法135 
12.16 None值136 
12.17回到代碼136 
12.18 “除以零”錯誤138 
12.19 float()、int( )和str()函數以及
整數除法138 
12.20 D組練習139 
12.21回到代碼139 
12.22 append()列表方法139 
12.23默認參數值140 
12.24計算比例141 
12.25 E組練習142 
12.26總結143 
第13章破譯換位加密法144 
13.1換位加密法破譯程序的源代碼144 
13.2運行換位加密法破譯程序145 
13.3這個程序如何工作146 
13.4使用三引號的多行字符串146 
13.5回到代碼147 
13.6 strip()字符串方法148 
13.7 A組練習150 
13.8總結150 
第14章取模運算與乘數加密法和
仿射加密法151 
14.1噢,不,數學!151 
14.2數學,噢耶!151 
14.3取模運算(又名時鐘運算) 151 
14.4取模運算符% 152 
14.5 A組練習153 
14.6 GCD:最大公約數(又名最大
公因子) 153 
14.7使用古氏積木(Cuisenaire rods)可視化因子和GCD 154 
14.8 B組練習155 
14.9多重賦值155 
14.10通過多重賦值交換值156 
14.11找出兩個數字的GCD的
歐幾里得算法156 
14.12 “互質” 157 
14.13 C組練習157 
14.14乘數加密法157 
14.15 D組練習159 
14.16乘數加密法+凱撒加密法= 
仿射加密法159 
14.17仿射密鑰的第一個問題159 
14.18使用仿射加密法解密160 
14.19找出模逆161 
14.20 //整數除法運算符161 
14.21 cryptomath模塊的源代碼162 
14.22 E組練習163 
14.23總結163 
第15章仿射加密法164 
15.1仿射加密法程序的源代碼164 
15.2運行仿射加密法程序166 
15.3 A組練習166 
15.4這個程序如何工作166 
15.5把一個密鑰分成兩個密鑰167 
15.6元祖數據類型168 
15.7密鑰的輸入驗證168 
15.8仿射加密法加密函數169 
15.9仿射加密法解密函數170 
15.10生成隨機密鑰171 
15.11仿射密鑰的第二個問題:仿射加密法可以有多少個密鑰172 
15.12總結173 
第16章破譯仿射加密法174 
16.1仿射加密法破譯程序的
源代碼174 
16.2運行仿射加密法破譯程序175 
16.3這個程序如何工作176 
16.4仿射加密法破譯函數177 
16.5 **指數運算符177 
16.6 continue語句178 
16.7 A組練習180 
16.8總結180 
第17章簡單替代加密法181 
17.1使用紙筆實現簡單替代加密法181 
17.2 A組練習182 
17.3簡單替代加密法的源代碼182 
17.4運行簡單替代加密法程序183 
17.5這個程序如何工作184 
17.6程序的main()函數184 
17.7 sort()列表方法185 
17.8包裝器函數186 
17.9程序的translateMessage() 
函數187 
17.10 isupper()和islower()字符串
方法189 
17.11 B組練習190 
17.12生成隨機密鑰190 
17.13加密空格和標點符號191 
17.14 C組練習191 
17.15總結192 
第18章破譯簡單替代加密法193 
18.1計算單詞模式193 
18.2獲取密詞的候選單詞列表194 
18.3 A組練習195 
18.4單詞模式模塊的源代碼195 
18.5運行單詞模式模塊196 
18.6這個程序如何工作197 
18.7 pprint. pprint()和pprint. 
pformat()函數197 
18.8在Python裡使用列表創建
字符串198 
18.9計算單詞模式199 
18.10單詞模式程序的main()函數200 
18.11破譯簡單替代加密法202 
18.12簡單替代破譯程序的源代碼202 
18.13破譯簡單替代加密法(理論) 205 
18.14使用Interactive Shell探索
破譯函數205 
18.15這個程序如何工作209 
18.16導入所有東西209 
18.17正則表達式和sub()正則方法
簡介210 
18.18破譯程序的main()函數211 
18.19部分破譯加密法211 
18.20空密字映射212 
18.21把字母添加到密字映射213 
18.22計算兩個字母映射的交集214 
18.23從密字映射移除已經破譯的
字母215 
18.24破譯簡單替代加密法217 
18.25從密字映射創建密鑰219 
18.26我們不能把空格也加密嗎220 
18.27總結220 
第19章維吉尼亞加密法221 
19.1不可破譯的加密法221 
19.2維吉尼亞密鑰裡的多個“密鑰” 221 
19.3維吉尼亞加密法程序的源代碼224 
19.4運行維吉尼亞加密法程序226 
19.5這個程序如何工作227 
19.6總結230 
第20章頻率分析231 
20.1字母頻率和ETAOIN 231 
20.1.1匹配字母頻率232 
20.1.2計算頻率匹配分值的例子233 
20.1.3另一個計算頻率匹配分值的例子233 
20.1.4破譯每個子密鑰234 
20.2匹配字母頻率的代碼234 
20.3這個程序如何工作236 
20.4最常見的字母“ETAOIN” 237 
20.5這個程序的getLettersCount() 
函數237 
20.6這個程序的getItemAtIndex 
Zero()函數238 
20.7這個程序的getFrequencyOrder()函數238 
20.8 sort()方法的key和reverse關鍵字參數239 
20.9把函數作為值傳遞240 
20.10通過keys()、values()和items()詞典方法把詞典轉換成列表241 
20.11對詞典的項進行排序242 
20.12這個程序的englishFreqMatch 
Score()函數243 
20.13總結244 
第21章破譯維吉尼亞加密法245 
21.1詞典攻擊245 
21.2維吉尼亞詞典攻擊程序的源代碼245 
21.3運行維吉尼亞詞典破譯程序246 
21.4 readlines()文件對象方法247 
21.5巴貝奇攻擊和卡西斯基試驗247 
21.6卡西斯基試驗的第1步—— 
找出重複序列的間距247 
21.7卡西斯基試驗的第2步—— 
獲取間距的因子248 
21.8從字符串獲取每隔N個字母249 
21.9頻率分析249 
21.10暴力破譯可能密鑰251 
21.11維吉尼亞破譯程序的源代碼251 
21.12運行維吉尼亞破譯程序256 
21.13這個程序如何工作258 
21.14找出重複序列259 
21.15計算因子260 
21.16通過set()函數來移除重複值261 
21.17卡西斯基測試算法263 
21.18 extend()列表方法264 
21.19 print()的end關鍵字參數268 
21.20 itertools.product()函數269 
21.21 break語句272 
21.22 A組練習273 
21.23修改破譯程序的常量273 
21.24總結274 
第22章一次密碼本加密法275 
22.1牢不可破的一次密碼本加密法275 
22.2為什麼一次密碼本加密法是
牢不可破的275 
22.3小心偽隨機276 
22.4小心二次密碼本加密法277 
22.5二次密碼本加密法就是維吉尼亞加密法277 
22.6 A組練習278 
22.7總結278 
第23章尋找質數279 
23.1質數279 
23.2合數280 
23.3質數篩選模塊的源代碼280 
23.4這個程序如何工作281 
23.5如何判斷一個數字是不是質數282 
23.6埃拉托色尼篩選法283 
23.7 primeSieve()函數284 
23.8檢測質數285 
23.9拉賓米勒模塊的源代碼285 
23.10運行拉賓米勒模塊287 
23.11這個程序如何工作287 
23.12拉賓米勒算法287 
23.13新的經過改進的isPrime()函數288 
23.14總結289 
第24章公鑰密碼學和RSA加密法291 
24.1公鑰密碼學291 
24.2 “課本”RSA的危險292 
24.3身份驗證的問題292 
24.4中間人攻擊293 
24.5生成公鑰和私鑰293 
24.6 RSA密鑰生成程序的源代碼294 
24.7運行RSA密鑰生成程序295 
24.8這個密鑰生成程序如何工作296 
24.9這個程序的generateKey()函數297 
24.10 RSA密鑰文件格式299 
24.11混合加密機制300 
24.12 RSA加密法程序的源代碼300 
24.13運行RSA加密法程序303 
24.14 A組練習304 
24.15數字簽名304 
24.16 RSA加密法程序如何工作306 
24.17 ASCII:使用數字來表示字符307 
24.18 chr()和ord()函數308 
24.19 B組練習308 
24.20區塊308 
24.21使用getBlocksFromText()把
字符串轉成區塊311 
24.22 encode()字符串方法和字節數
據類型311 
24.23 bytes()函數和decode()bytes 
方法312 
24.24 C組練習312 
24.25回到代碼313 
24.26 min()和max()函數313 
24.27 insert()列表方法315 
24.28 RSA加密和解密的數學運算316 
24.29 pow()函數317 
24.30從密鑰文件讀取公鑰和私鑰318 
24.31完整的RSA加密流程318 
24.32完整的RSA解密流程320 
24.33 D組練習321 
24.34我們為什麼不能破譯RSA 
加密法321 
24.35總結323 

 
    
 
     
     
     
     
     
    
 
     
     
     
     
    