Python密碼學編程

基本簡介

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

相關詞條

熱門詞條

聯絡我們