Python駭客密碼|加密、解密與破解實例應用

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

    收集中
    US$16.15
    學習Python程式設計和密碼的破解技巧

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

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

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

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

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

    章節目錄

    1-1封面頁
    1-2書名頁
    1-3作者簡介
    1-4技術審校者簡介
    1-5致謝
    1-6目錄
    1-7簡介
    1-8適合閱讀本書的讀者
    1-9本書內容
    1-10如何使用本書
    1-11輸入原始程式碼
    1-12檢查輸入的錯誤
    1-13本書編寫程式的慣例
    1-14線上資源
    1-15下載與安裝Python
    1-16Windows 版安裝指引
    1-17Mac OS 版安裝指引
    1-18Ubuntu 版安裝指示
    1-19下載pyperclip.py
    1-20開啟IDLE
    1-21總結
    1-22CH01 製作紙上的密碼工具
    1-23什麼是密碼學?
    1-24代碼與密碼
    1-25凱撒密碼
    1-26密碼輪盤
    1-27以密碼輪盤進行加密
    1-28以密碼輪盤進行解密
    1-29以數學算術來加密和解密
    1-30為什麼雙重加密不可行
    1-31總結
    1-32練習題
    1-33CH02 在互動式Shell 中程式設計
    1-34一些簡易的數學表示式
    1-35整數與浮點數
    1-36表示式
    1-37運算子的順序
    1-38表示式運算求值
    1-39以變數來儲存值
    1-40覆寫變數
    1-41變數名稱
    1-42總結
    1-43練習題
    1-44CH03 字串與編寫程式
    1-45使用字串值來處理文字
    1-46以+運算子連接字串
    1-47使用* 運算子複製字串
    1-48使用索引足標從字串中擷取字元
    1-49使用print()函式印出值
    1-50印出轉義字元
    1-51單引號與雙引號
    1-52在IDLE 的File Editor 中編寫程式
    1-53「Hello, world!」的原始程式碼
    1-54使用Online diff tool 檢查程式碼
    1-55使用IDLE 存取您的程式
    1-56儲存您的程式
    1-57執行您的程式
    1-58開啟您儲存的程式檔
    1-59「Hello world!」程式的運作原理
    1-60注釋
    1-61對使用者印出說明指示
    1-62取得使用者輸入的東西
    1-63結束程式
    1-64總結
    1-65練習題
    1-66CH04 反轉密碼
    1-67反轉密碼程式的原始程式碼
    1-68反轉密碼程式的執行範例
    1-69設計注釋與變數
    1-70找出字串的長度
    1-71while 迴圈簡介
    1-72布林資料型別
    1-73比較運算子
    1-74區塊
    1-75while 迴圈陳述式
    1-76「增長」某個字串
    1-77利用input()輸入來改進程式
    1-78總結
    1-79練習題
    1-80CH05 凱撒密碼
    1-81凱撒密碼程式的原始程式碼
    1-82凱撒密碼程式的執行範例
    1-83匯入模組與設定變數
    1-84常數與變數
    1-85for 迴圈陳述句
    1-86迴圈範例
    1-87與for 迴圈相同作用的while 迴圈
    1-88if 陳述句
    1-89if 陳述句範例
    1-90else 陳述句
    1-91elif 陳述句
    1-92in 和not in 運算子
    1-93find() 字串方法
    1-94加密和解密符號
    1-95繞回開頭或尾端倒數回去
    1-96處理不在符號集中的符號
    1-97顯示和複製轉換後的字串
    1-98加密其他符號
    1-99總結
    1-100練習題
    1-101CH06 以暴力破解凱撒密碼
    1-102凱撒密碼破解程式的原始程式碼
    1-103凱撒密碼破解程式的執行範例
    1-104設定變數
    1-105以range()函式進行迴圈
    1-106解密訊息
    1-107使用字串格式化來編排密鑰和解密訊息
    1-108總結
    1-109練習題
    1-110CH07 使用換位密碼進行加密
    1-111換位密碼的運作原理
    1-112以手動方式加密訊息
    1-113建立加密程式
    1-114換位密碼程式的原始程式碼
    1-115換位密碼程式的執行範例
    1-116使用def 陳述句建立自己的函式
    1-117定義有引數和參數的函式
    1-118參數的更改只存在於函式內部
    1-119定義main()函式
    1-120把密鑰和訊息當成引數傳入
    1-121串列資料型別
    1-122重新指定項目到串列中
    1-123串列中的串列
    1-124使用len() 和in 運算子來處理串列
    1-125使用+和* 運算子來連接和複製串列
    1-126換位加密的演算法
    1-127擴增指定運算子
    1-128利用currentIndex 在message 字串中逐個字元移動
    1-129join() 字串方法
    1-130返回值與返回陳述式
    1-131return 陳述式的範例
    1-132返回加密後的密文
    1-133__name__變數
    1-134總結
    1-135練習題
    1-136CH08 使用換位密碼進行解密
    1-137在紙上進行換位密碼的解密處理
    1-138換位密碼解密程式的原始程式碼
    1-139換位密碼解密程式的執行範例
    1-140匯入模組與設定main()函式
    1-141使用密鑰來解密訊息
    1-142round()、math.ceil() 和math.floor() 函式
    1-143decryptMessage() 函式
    1-144布林運算子
    1-145調整欄和列的變數
    1-146呼叫main() 函式
    1-147總結
    1-148練習題
    1-149CH09 編寫程式來測試您的程式
    1-150換位密碼測試程式的原始程式碼
    1-151換位密碼測試程式的執行範例
    1-152匯入模組
    1-153建立偽隨機數
    1-154建立隨機字串
    1-155隨機多次複製字串
    1-156串列變數使用參照
    1-157傳參照
    1-158使用copy.deepcopy() 來複製串列
    1-159random.shuffle() 函式
    1-160隨機重新排放字串中的字元
    1-161測試每個訊息
    1-162檢測密碼程式是否正確運作和結束程式執行
    1-163呼叫main()函式
    1-164測試執行這個測試程式
    1-165總結
    1-166練習題
    1-167CH10 加密和解密檔案
    1-168純文字檔
    1-169換位檔案密碼程式的原始程式碼
    1-170換位檔案密碼程式的執行範例
    1-171處理檔案
    1-172開啟檔案
    1-173寫入與關閉檔案
    1-174讀取檔案
    1-175設定main()函式
    1-176檢測檔案是否存在
    1-177os.path.exists() 函式
    1-178使用os.path.exists() 函式檢查輸入檔是否存在
    1-179利用字串方法讓使用者輸入更有彈性
    1-180upper()、lower() 和title() 字串方法
    1-181startswith() 和endswith() 字串方法
    1-182在程式中使用字串方法
    1-183讀取輸入檔
    1-184計算加密或解密所花費的時間
    1-185time 模組和time.time() 函式
    1-186在程式中使用time.time() 函式
    1-187寫入輸出檔
    1-188呼叫main() 函式
    1-189總結
    1-190練習題
    1-191CH11 以程式來偵測英文
    1-192電腦要如何理解英文字
    1-193偵測英文模組的原始程式碼
    1-194偵測英文模組的執行範例
    1-195說明指引與設定常數
    1-196字典資料型別
    1-197字典和串列的差異
    1-198在字典中新增或變更項目
    1-199在字典上使用len() 函式
    1-200在字典上使用in 運算子
    1-201在字典中搜尋比在串列中搜尋快
    1-202在字典上使用for 迴圈
    1-203字典檔的實作處理
    1-204split() 方法
    1-205把字典檔分割成單字
    1-206返回字典資料型別
    1-207計算訊息中英文單字的數量
    1-208除以0 的錯誤
    1-209計算識別為英文單字的個數
    1-210float()、int()、str() 函式與整數除法
    1-211找出訊息文字中屬於英文的比例
    1-212移除非英文的字元
    1-213append() 串列方法
    1-214建立字母的字串
    1-215偵測英文單字
    1-216預設引數
    1-217計算百分比
    1-218總結
    1-219練習題
    1-220CH12 破解換位密碼
    1-221換位密碼破解程式的原始程式碼
    1-222換位密碼破解程式的執行範例
    1-223匯入模組
    1-224使用三重引號來處理多行字串
    1-225顯示破解訊息的結果
    1-226取得破解訊息
    1-227strip() 字串方法
    1-228strip() 字串方法的應用
    1-229破解失敗
    1-230呼叫main() 函式
    1-231總結
    1-232練習題
    1-233CH13 仿射密碼所用的模算術模組
    1-234模算數
    1-235模除運算子(%)
    1-236找出計算最大公約數的因數
    1-237多重指定
    1-238使用歐幾里得演算法來尋找最大公約數
    1-239理解乘法密碼和仿射密碼的工作原理
    1-240選擇有效的乘法密鑰
    1-241以仿射密碼進行加密
    1-242仿射密碼的解密處理
    1-243找出模倒數
    1-244整數除法運算子
    1-245Cryptomath 模組的原始程式碼
    1-246總結
    1-247練習題
    1-248CH14 仿射密碼程式設計
    1-249仿射密碼程式的原始程式碼
    1-250執行仿射密碼程式的範例
    1-251設定模組、常數和main()函式
    1-252計算和驗證密鑰
    1-253多元組資料型別
    1-254檢測出弱的密鑰值
    1-255仿射密碼可選用的密鑰值有幾個
    1-256編寫加密函式
    1-257編寫解密函式
    1-258產生隨機密鑰
    1-259呼叫main() 函式
    1-260總結
    1-261練習題
    1-262CH15 破解仿射密碼
    1-263仿射密碼破解程式的原始程式碼
    1-264仿射密碼破解程式的執行範例
    1-265設定模組、常數和main()函式
    1-266仿射密碼破解函式
    1-267指數運算子
    1-268計算可選用密鑰的總數
    1-269continue 陳述式
    1-270使用continue 陳述式跳過程式碼
    1-271呼叫main() 函式
    1-272總結
    1-273練習題
    1-274CH16 簡易替換密碼程式設計
    1-275簡易替換密碼的運作原理
    1-276簡易替換密碼程式的原始程式碼
    1-277簡易替換密碼程式的執行範例
    1-278設定模組、常數和main() 函式
    1-279sort() 串列方法
    1-280包裝函式
    1-281translateMessage()函式
    1-282isupper() 和islower() 字串方法
    1-283使用isupper() 確保大寫
    1-284產生隨機密鑰
    1-285呼叫main() 函式
    1-286總結
    1-287練習題
    1-288CH17 破解簡易替換密碼
    1-289使用單字模式來解密
    1-290找出單字模式
    1-291找出可能的解密字母
    1-292破解過程總覽
    1-293單字模式模組
    1-294簡易替換密碼破解程式的原始程式碼
    1-295簡易替換密碼破解程式執行範例
    1-296設定模組與常數
    1-297利用正規表示式來搜尋字元
    1-298設定main() 函式
    1-299顯示破解結果給使用者看
    1-300建立密碼字母對映
    1-301建立空的對映
    1-302新增字母到對映中
    1-303兩個對映的交集
    1-304字母對映輔助函式的運作原理
    1-305識別對映中已解開的字母
    1-306測試removeSolvedLetterFromMapping() 函式
    1-307hackSimpleSub()函式
    1-308replace() 字串方法
    1-309解密訊息
    1-310在互動式Shell 中解密
    1-311呼叫main() 函式
    1-312總結
    1-313練習題
    1-314CH18 維吉尼亞密碼程式設計
    1-315在維吉尼亞密碼中使用多個字母密鑰
    1-316愈長的維吉尼亞密鑰愈安全
    1-317選用防止字典破解攻擊的密鑰
    1-318維吉尼亞密碼程式的原始程式碼
    1-319維吉尼亞密碼程式的執行範例
    1-320設定模組、常數和main()函式
    1-321使用串列-新增-合併的流程來建立字串
    1-322訊息的加密和解密
    1-323呼叫main() 函式
    1-324總結
    1-325練習題
    1-326CH19 頻率分析
    1-327在文字中分析字母的出現頻率
    1-328比對字母出現的頻率
    1-329為簡易替換密碼計算頻率相符分數
    1-330為換位密碼計算頻率相符分數
    1-331在維吉尼亞密碼上使用頻率分析
    1-332比對字母頻率程式的原始程式碼
    1-333把字母依照ETAOIN 順序存放
    1-334訊息中字母的計數
    1-335取得多元組的第1 個成員
    1-336依照頻率來排序訊息中的字母
    1-337計算字串中的各字母數量
    1-338建立一個含有頻率計數和字母串列的字典
    1-339以ETAOIN 反向順序對字母串列進行排序
    1-340以頻率來對字典串列進行排序
    1-341建立排序後字母的串列
    1-342計算訊息的頻率相符分數
    1-343總結
    1-344練習題
    1-345CH20 破解維吉尼亞密碼
    1-346以暴力法使用字典攻擊破解維吉尼亞密碼
    1-347維吉尼亞字典攻擊破解程式的原始程式碼
    1-348維吉尼亞字典攻擊破解程式的執行範例
    1-349關於維吉尼亞字典攻擊破解程式
    1-350使用卡西斯基檢驗找出密鑰長度
    1-351尋找重複的序列
    1-352取得間距的因數
    1-353從字串取得每隔N 個的字母
    1-354使用頻率分析來破解各個子密鑰
    1-355以暴力法處理所有可能的密鑰
    1-356維吉尼亞密碼破解程式的原始程式碼
    1-357維吉尼亞密碼破解程式的執行範例
    1-358匯入模組與設定main()函式
    1-359找出重複序列
    1-360計算間距的因數
    1-361使用set() 函式刪除重複內容
    1-362刪除重複因數與排序串列
    1-363找出最常見的因數
    1-364找出最有可能的密鑰長度
    1-365extend() 串列方法
    1-366擴展repeatSeqSpacings 字典
    1-367從factorsByCount 取得因數
    1-368取得使用相同子密鑰加密的字母
    1-369使用可能的密鑰長度來進行解密
    1-370print() 的end 關鍵字引數
    1-371以靜默模式執行程式或把訊息輸出給使用者
    1-372找出子密鑰的可能組合
    1-373使用正確的大小寫印出解密文字
    1-374返回破解訊息
    1-375找到潛在密鑰時中斷迴圈
    1-376以暴力法處理所有密鑰長度
    1-377呼叫main()函式
    1-378修改破解程式的常數
    1-379總結
    1-380練習題
    1-381CH21 一次性密碼本密碼
    1-382不能破解的一次性密碼本密碼
    1-383讓密鑰長度等於訊息長度
    1-384讓密鑰真的隨機
    1-385避免二次密碼本
    1-386為什麼二次密碼本等同於維吉尼亞密碼
    1-387總結
    1-388練習題
    1-389CH22 尋找與產生質數
    1-390什麼是質數
    1-391質數模組的原始程式碼
    1-392質數模組的執行範例
    1-393試除演算法的運作原理
    1-394實作試除演算法檢測
    1-395埃拉托斯特尼篩法
    1-396使用埃拉托斯特尼篩法生成質數
    1-397米勒-拉賓質數判定演算法
    1-398找出大型質數
    1-399生成大型質數
    1-400總結
    1-401練習題
    1-402CH23 生成公鑰密碼的公鑰
    1-403公鑰密碼學
    1-404驗證(Authentication)的問題
    1-405數位簽章(Digital signatures)
    1-406小心中間人攻擊(MITM attack)
    1-407生成公鑰和私鑰的步驟
    1-408公鑰生成程式的原始程式碼
    1-409公鑰生成程式的執行範例
    1-410建立main() 函式
    1-411以generateKey()函式生成密鑰
    1-412計算e 值
    1-413計算d 值
    1-414返回密鑰
    1-415使用makeKeyFiles()函式來建立密鑰檔
    1-416呼叫main()函式
    1-417混和密碼體制
    1-418總結
    1-419練習題
    1-420CH24 公鑰密碼程式設計
    1-421公鑰密碼的原理
    1-422建立區塊
    1-423把字串轉換成區塊
    1-424公鑰密碼加密和解密所使用的數學
    1-425把區塊轉換成字串
    1-426為什麼公鑰密碼不能破解
    1-427公鑰密碼程式的原始程式碼
    1-428公鑰密碼程式的執行範例
    1-429設定程式
    1-430程式怎麼決定是要進行加密或解密的
    1-431使用getBlocksFromText()把字串轉換成區塊
    1-432min() 與max() 函式
    1-433把區塊存入blockInt
    1-434使用getTextFromBlocks() 進行解密
    1-435使用insert() 串列方法
    1-436把訊息串列合併成字串
    1-437編寫encryptMessage()函式
    1-438編寫decryptMessage()函式
    1-439從密鑰檔中讀取公鑰和私鑰
    1-440把加密內容寫入檔案中
    1-441從檔案解密訊息
    1-442呼叫main() 函式
    1-443總結
    1-444附錄 偵錯Python 程式碼
    1-445Debugger 的操作方式
    1-446對反轉密碼程式進行偵錯處理
    1-447設定中斷點
    1-448總結
    1-449版權頁
    1-450封底頁

    常見問答

    您可以透過手機、平板或是電腦登入 HiSKIO 平台,在【我的學習】>【我的書籍】頁面,選擇想看的電子書。

    猜你喜歡

    用戶評價

    | 收集中

    銷售方案