|
-- 會員 / 註冊 --
|
|
|
|
Python密碼學編程 ( 簡體 字) |
作者:[美] Al Sweigart 斯維加特 | 類別:1. -> 程式設計 -> Python |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 44910 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:8/1/2016 |
頁數:324 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115424297 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介: 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
|
序: |
|