PDF JPG
本書有DRM加密保護,需使用HyRead閱讀軟體開啟
  • Python駭客密碼:加密、解密與破解實例應用:學習Python程式設計和密碼的破解技巧
  • 點閱:470
    287人已收藏
  • 譯自:Cracking codes with Python
  • 作者: Al Sweigart作 , H&C譯
  • 出版社:碁峰資訊
  • 出版年:2021
  • ISBN:9789865020804
  • EISBN:9789865028992 PDF
  • 格式:PDF,JPG
  • 附註:附錄: 偵錯Python程式碼

學習Python程式設計和密碼的破解技巧

本書教您學習製作與破解密碼的相關演算法知識,以及如何在Python中編寫程式來實作和傳送機密訊息!

本書前幾章會教您Python基礎的程式設計知識和技巧,接著學習各種經典傳統密碼的相關知識原理,以及怎麼使用這類傳統密碼進行加密解密,並編寫、實作、測試和破解程式。本書所講述的包括反轉密碼、凱撒密碼、換位密碼、仿射密碼、簡易替換密碼、維吉尼亞密碼等,最後還有公鑰密碼,這個保護著目前線上交易加密應用,像數位簽章、email和比特幣等都有使用的技術。


書中所有範例程式都會完整列出,並逐行解說其Python技巧和運作原理。讀完本書,您不僅學會怎麼在Python中編寫程式碼,您還會有很多完整的程式實例可實證您的學習成果!

本書內容還包括:
‧教您結合迴圈、變數和流程控制等技巧在實際的程式上應用
‧教您使用字典攻擊馬上檢測解密訊息是否為英文或只是亂碼
‧教您製作測試程式,用來確保加密和解密的處理是正確無誤的
‧以完整的仿射密碼實例教您活用模除運算等數學概念來加密訊息
‧教您活用暴力破解法與頻率分析等破解技術

從範例程式中動手實作與體會是最好的學習方式,本書有完整眾多的實例能讓您能夠享受學習Python與密碼學的樂趣。

作者簡介

Al Sweigart

Al Sweigart 是位軟體開發專家,也是技術書的作者,還教過小朋友和成人的程式設計相關課程。他為初學者編寫了多本Python書籍,包括《Python自動化的樂趣|搞定重複瑣碎&單調無聊的工作》、《Python好好玩|趣學電玩遊戲程式設計》等。他的程式設計教學網站是https://inventwithpython.com/。

  • 簡介(第1頁)
    • 適合閱讀本書的讀者(第2頁)
    • 本書內容(第3頁)
    • 如何使用本書(第5頁)
    • 下載與安裝Python(第7頁)
    • 下載pyperclip.py(第8頁)
    • 開啟IDLE(第8頁)
    • 總結(第10頁)
  • 第 1 章 製作紙上的密碼工具(第11頁)
    • 什麼是密碼學?(第12頁)
    • 代碼與密碼(第13頁)
    • 凱撒密碼(第14頁)
    • 為什麼雙重加密不可行(第19頁)
    • 總結(第20頁)
    • 練習題(第20頁)
  • 第 2 章 在互動式Shell 中程式設計(第23頁)
    • 一些簡易的數學表示式(第24頁)
    • 以變數來儲存值(第28頁)
    • 總結(第32頁)
    • 練習題(第32頁)
  • 第 3 章 字串與編寫程式(第35頁)
    • 使用字串值來處理文字(第36頁)
    • 使用print()函式印出值(第42頁)
    • 印出轉義字元(第43頁)
    • 單引號與雙引號(第44頁)
    • 在IDLE 的File Editor 中編寫程式(第45頁)
    • 「Hello, world!」的原始程式碼(第46頁)
    • 使用Online diff tool 檢查程式碼(第47頁)
    • 使用IDLE 存取您的程式(第48頁)
    • 「Hello world!」程式的運作原理(第50頁)
    • 總結(第52頁)
    • 練習題(第53頁)
  • 第 4 章 反轉密碼(第55頁)
    • 反轉密碼程式的原始程式碼(第56頁)
    • 反轉密碼程式的執行範例(第56頁)
    • 設計注釋與變數(第57頁)
    • 找出字串的長度(第58頁)
    • while 迴圈簡介(第59頁)
    • 利用input()輸入來改進程式(第67頁)
    • 總結(第68頁)
    • 練習題(第68頁)
  • 第 5 章 凱撒密碼(第71頁)
    • 凱撒密碼程式的原始程式碼(第72頁)
    • 凱撒密碼程式的執行範例(第73頁)
    • 匯入模組與設定變數(第74頁)
    • 常數與變數(第75頁)
    • for 迴圈陳述句(第76頁)
    • if 陳述句(第78頁)
    • in 和not in 運算子(第80頁)
    • find() 字串方法(第81頁)
    • 加密和解密符號(第82頁)
    • 顯示和複製轉換後的字串(第85頁)
    • 加密其他符號(第86頁)
    • 總結(第86頁)
    • 練習題(第87頁)
  • 第 6 章 以暴力破解凱撒密碼(第89頁)
    • 凱撒密碼破解程式的原始程式碼(第90頁)
    • 凱撒密碼破解程式的執行範例(第91頁)
    • 設定變數(第92頁)
    • 以range()函式進行迴圈(第92頁)
    • 解密訊息(第93頁)
    • 使用字串格式化來編排密鑰和解密訊息(第95頁)
    • 總結(第96頁)
    • 練習題(第96頁)
  • 第 7 章 使用換位密碼進行加密(第97頁)
    • 換位密碼的運作原理(第98頁)
    • 換位密碼程式的原始程式碼(第102頁)
    • 換位密碼程式的執行範例(第103頁)
    • 使用def 陳述句建立自己的函式(第103頁)
    • 把密鑰和訊息當成引數傳入(第107頁)
    • 串列資料型別(第107頁)
    • 換位加密的演算法(第111頁)
    • 擴增指定運算子(第113頁)
    • 利用currentIndex 在message 字串中逐個字元移動(第114頁)
    • join() 字串方法(第116頁)
    • 返回值與返回陳述式(第116頁)
    • __name__變數(第118頁)
    • 總結(第119頁)
    • 練習題(第120頁)
  • 第 8 章 使用換位密碼進行解密(第121頁)
    • 在紙上進行換位密碼的解密處理(第122頁)
    • 換位密碼解密程式的原始程式碼(第123頁)
    • 換位密碼解密程式的執行範例(第125頁)
    • 匯入模組與設定main()函式(第125頁)
    • 使用密鑰來解密訊息(第126頁)
    • 呼叫main() 函式(第134頁)
    • 總結(第134頁)
    • 練習題(第135頁)
  • 第 9 章 編寫程式來測試您的程式(第137頁)
    • 換位密碼測試程式的原始程式碼(第138頁)
    • 換位密碼測試程式的執行範例(第139頁)
    • 匯入模組(第140頁)
    • 建立偽隨機數(第140頁)
    • 建立隨機字串(第142頁)
    • 測試每個訊息(第148頁)
    • 檢測密碼程式是否正確運作和結束程式執行(第148頁)
    • 呼叫main()函式(第149頁)
    • 測試執行這個測試程式(第150頁)
    • 總結(第151頁)
    • 練習題(第151頁)
  • 第 10 章 加密和解密檔案(第153頁)
    • 純文字檔(第154頁)
    • 換位檔案密碼程式的原始程式碼(第155頁)
    • 換位檔案密碼程式的執行範例(第156頁)
    • 處理檔案(第157頁)
    • 設定main()函式(第159頁)
    • 檢測檔案是否存在(第160頁)
    • 利用字串方法讓使用者輸入更有彈性(第161頁)
    • 讀取輸入檔(第163頁)
    • 計算加密或解密所花費的時間(第163頁)
    • 寫入輸出檔(第165頁)
    • 呼叫main() 函式(第165頁)
    • 總結(第166頁)
    • 練習題(第166頁)
  • 第 11 章 以程式來偵測英文(第167頁)
    • 電腦要如何理解英文字(第168頁)
    • 偵測英文模組的原始程式碼(第170頁)
    • 偵測英文模組的執行範例(第171頁)
    • 說明指引與設定常數(第171頁)
    • 字典資料型別(第172頁)
    • 字典檔的實作處理(第177頁)
    • 計算訊息中英文單字的數量(第179頁)
    • 移除非英文的字元(第182頁)
    • 偵測英文單字(第184頁)
    • 總結(第187頁)
    • 練習題(第188頁)
  • 第 12 章 破解換位密碼(第189頁)
    • 換位密碼破解程式的原始程式碼(第190頁)
    • 換位密碼破解程式的執行範例(第191頁)
    • 匯入模組(第192頁)
    • 使用三重引號來處理多行字串(第192頁)
    • 顯示破解訊息的結果(第193頁)
    • 取得破解訊息(第194頁)
    • 呼叫main() 函式(第197頁)
    • 總結(第198頁)
    • 練習題(第198頁)
  • 第 13 章 仿射密碼所用的模算術模組(第199頁)
    • 模算數(第200頁)
    • 模除運算子(%)(第202頁)
    • 找出計算最大公約數的因數(第202頁)
    • 多重指定(第205頁)
    • 使用歐幾里得演算法來尋找最大公約數(第206頁)
    • 理解乘法密碼和仿射密碼的工作原理(第207頁)
    • Cryptomath 模組的原始程式碼(第212頁)
    • 總結(第213頁)
    • 練習題(第214頁)
  • 第 14 章 仿射密碼程式設計(第215頁)
    • 仿射密碼程式的原始程式碼(第216頁)
    • 執行仿射密碼程式的範例(第218頁)
    • 設定模組、常數和main()函式(第218頁)
    • 計算和驗證密鑰(第220頁)
    • 編寫加密函式(第224頁)
    • 編寫解密函式(第225頁)
    • 產生隨機密鑰(第226頁)
    • 呼叫main() 函式(第227頁)
    • 總結(第228頁)
    • 練習題(第228頁)
  • 第 15 章 破解仿射密碼(第229頁)
    • 仿射密碼破解程式的原始程式碼(第230頁)
    • 仿射密碼破解程式的執行範例(第231頁)
    • 設定模組、常數和main()函式(第232頁)
    • 仿射密碼破解函式(第233頁)
    • 呼叫main() 函式(第237頁)
    • 總結(第237頁)
    • 練習題(第238頁)
  • 第 16 章 簡易替換密碼程式設計(第239頁)
    • 簡易替換密碼的運作原理(第240頁)
    • 簡易替換密碼程式的原始程式碼(第241頁)
    • 簡易替換密碼程式的執行範例(第243頁)
    • 設定模組、常數和main() 函式(第243頁)
    • sort() 串列方法(第245頁)
    • 包裝函式(第246頁)
    • translateMessage()函式(第247頁)
    • 產生隨機密鑰(第251頁)
    • 呼叫main() 函式(第252頁)
    • 總結(第252頁)
    • 練習題(第253頁)
  • 第 17 章 破解簡易替換密碼(第255頁)
    • 使用單字模式來解密(第256頁)
    • 破解過程總覽(第259頁)
    • 單字模式模組(第260頁)
    • 簡易替換密碼破解程式的原始程式碼(第261頁)
    • 簡易替換密碼破解程式執行範例(第264頁)
    • 設定模組與常數(第265頁)
    • 利用正規表示式來搜尋字元(第265頁)
    • 設定main() 函式(第266頁)
    • 顯示破解結果給使用者看(第267頁)
    • 建立密碼字母對映(第267頁)
    • hackSimpleSub()函式(第277頁)
    • 呼叫main() 函式(第282頁)
    • 總結(第282頁)
    • 練習題(第283頁)
  • 第 18 章 維吉尼亞密碼程式設計(第285頁)
    • 在維吉尼亞密碼中使用多個字母密鑰(第286頁)
    • 維吉尼亞密碼程式的原始程式碼(第289頁)
    • 維吉尼亞密碼程式的執行範例(第291頁)
    • 設定模組、常數和main()函式(第291頁)
    • 使用串列-新增-合併的流程來建立字串(第292頁)
    • 訊息的加密和解密(第293頁)
    • 呼叫main() 函式(第296頁)
    • 總結(第296頁)
    • 練習題(第297頁)
  • 第 19 章 頻率分析(第299頁)
    • 在文字中分析字母的出現頻率(第300頁)
    • 比對字母出現的頻率(第302頁)
    • 比對字母頻率程式的原始程式碼(第305頁)
    • 把字母依照ETAOIN 順序存放(第307頁)
    • 訊息中字母的計數(第308頁)
    • 取得多元組的第1 個成員(第309頁)
    • 依照頻率來排序訊息中的字母(第310頁)
    • 計算訊息的頻率相符分數(第319頁)
    • 總結(第320頁)
    • 練習題(第320頁)
  • 第 20 章 破解維吉尼亞密碼(第321頁)
    • 以暴力法使用字典攻擊破解維吉尼亞密碼(第322頁)
    • 維吉尼亞字典攻擊破解程式的原始程式碼(第322頁)
    • 維吉尼亞字典攻擊破解程式的執行範例(第323頁)
    • 關於維吉尼亞字典攻擊破解程式(第324頁)
    • 使用卡西斯基檢驗找出密鑰長度(第324頁)
    • 維吉尼亞密碼破解程式的原始程式碼(第330頁)
    • 維吉尼亞密碼破解程式的執行範例(第336頁)
    • 匯入模組與設定main()函式(第336頁)
    • 找出重複序列(第337頁)
    • 計算間距的因數(第340頁)
    • 找出最有可能的密鑰長度(第344頁)
    • 取得使用相同子密鑰加密的字母(第346頁)
    • 使用可能的密鑰長度來進行解密(第348頁)
    • 返回破解訊息(第356頁)
    • 呼叫main()函式(第358頁)
    • 修改破解程式的常數(第358頁)
    • 總結(第359頁)
    • 練習題(第360頁)
  • 第 21 章 一次性密碼本密碼(第361頁)
    • 不能破解的一次性密碼本密碼(第362頁)
    • 總結(第367頁)
    • 練習題(第367頁)
  • 第 22 章 尋找與產生質數(第369頁)
    • 什麼是質數(第370頁)
    • 質數模組的原始程式碼(第372頁)
    • 質數模組的執行範例(第374頁)
    • 試除演算法的運作原理(第374頁)
    • 實作試除演算法檢測(第376頁)
    • 埃拉托斯特尼篩法(第377頁)
    • 使用埃拉托斯特尼篩法生成質數(第379頁)
    • 米勒-拉賓質數判定演算法(第380頁)
    • 找出大型質數(第381頁)
    • 生成大型質數(第382頁)
    • 總結(第383頁)
    • 練習題(第383頁)
  • 第 23 章 生成公鑰密碼的公鑰(第385頁)
    • 公鑰密碼學(第386頁)
    • 驗證(Authentication)的問題(第388頁)
    • 生成公鑰和私鑰的步驟(第390頁)
    • 公鑰生成程式的原始程式碼(第391頁)
    • 公鑰生成程式的執行範例(第393頁)
    • 建立main() 函式(第394頁)
    • 以generateKey()函式生成密鑰(第394頁)
    • 使用makeKeyFiles()函式來建立密鑰檔(第397頁)
    • 呼叫main()函式(第399頁)
    • 混和密碼體制(第399頁)
    • 總結(第399頁)
    • 練習題(第400頁)
  • 第 24 章 公鑰密碼程式設計(第401頁)
    • 公鑰密碼的原理(第402頁)
    • 公鑰密碼程式的原始程式碼(第410頁)
    • 公鑰密碼程式的執行範例(第413頁)
    • 設定程式(第415頁)
    • 程式怎麼決定是要進行加密或解密的(第415頁)
    • 使用getBlocksFromText()把字串轉換成區塊(第416頁)
    • 使用getTextFromBlocks() 進行解密(第419頁)
    • 編寫encryptMessage()函式(第421頁)
    • 編寫decryptMessage()函式(第422頁)
    • 從密鑰檔中讀取公鑰和私鑰(第422頁)
    • 把加密內容寫入檔案中(第423頁)
    • 從檔案解密訊息(第426頁)
    • 呼叫main() 函式(第427頁)
    • 總結(第428頁)
  • 附錄 偵錯Python 程式碼(第431頁)
    • Debugger 的操作方式(第432頁)
    • 對反轉密碼程式進行偵錯處理(第434頁)
    • 設定中斷點(第436頁)
    • 總結(第438頁)
紙本書 NT$ 520
單本電子書
NT$ 520

同分類熱門書
還沒安裝 HyRead 3 嗎?馬上免費安裝~
QR Code