産品特色
編輯推薦
本書是學習用Python編程實現加密算法的初學者指南。本書采用的示例源代碼,是幾個加密算法及其破解程序,包括凱撒密碼、換位加密法、乘數加密法、仿射加密法、簡單代替加密法、維吉尼亞加密法等,以及這些加密法的破解程序。本書的後一章還介紹瞭現代RSA加密法和公鑰加密法。
本書適閤Python初學者和密碼學的初學者,也適閤信息安全從業人員。
內容簡介
Python是一種高級程序設計語言,因其簡潔、易讀及可擴展性日漸成為程序設計領域備受推崇的語言。同時,Python語言在算法領域也得到瞭很好的應用。
本書通過理論和實例相結閤的方式介紹瞭多種加密算法。全書共分24章,由淺入深地介紹瞭與密碼學編程相關的各類基礎知識、編程技巧以及算法實現。除此之外,本書還提供瞭相應的源碼下載資源,以供讀者更好地進行探索和學習。
本書適閤Python初學者和密碼學的初學者,也適閤信息安全從業人員。
作者簡介
Al Sweigart是加利福尼亞州舊金山的一名軟件開發者。他很喜歡騎自行車、當誌願者、泡咖啡吧以及開發有用的軟件。他編寫瞭《Python遊戲編程快速上手》《Python和Pygame遊戲開發指南》《Python密碼學編程》《Python編程快速上手——讓繁瑣工作自動化》等圖書,深受讀者歡迎。他生於德剋薩斯的休斯頓。他在德剋薩斯大學Austin分校讀完瞭計算機科學學位。
目錄
第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
Z
Python密碼學編程 下載 mobi epub pdf txt 電子書