內容簡介
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