舉報

會員
Python密碼學編程(第2版)
最新章節:
小結
自互聯網面世以來,網絡安全一直是人們所重視的問題。從20世紀中葉開始,流傳千百年的密碼算法紛紛被投入到了網絡安全的應用中;隨后,在20世紀70年代,與古典密碼完全不同的密碼體制——公鑰密碼算法橫空出世,密碼學的發展完成了一次飛躍。Python誕生于20世紀90年代,它是一種面向對象語言特點與解釋型語言特點相結合的高級程序設計語言,已經得到了大規模應用。本書將Python語言與密碼學結合起來,從簡單的古典密碼算法開始,一直到公鑰密碼算法,進行了簡潔而細致的說明與解讀。每一種密碼算法的講解包括原理部分、實現部分和破解部分(公鑰算法不包括破解部分),其中后兩者附有詳細的Python代碼,注釋簡潔明了,可讀性極高。每章的末尾還提供了一些習題,幫助讀者鞏固所學知識并進行深入理解。本書適合任何想要學習Python編程并對密碼學抱有興趣的讀者。本書對Python編程的基礎要求不高,初學者可以放心地閱讀本書。相信本書一定能夠為讀者帶來絕佳的閱讀體驗。
最新章節
書友吧品牌:人郵圖書
譯者:鄭新芳 趙怡翾
上架時間:2020-05-20 09:06:53
出版社:人民郵電出版社
本書數字版權由人郵圖書提供,并由其授權上海閱文信息技術有限公司制作發行
- 小結 更新時間:2020-05-20 09:13:11
- 設置斷點
- 調試反向密碼程序
- 調試器如何工作
- 附錄 調試Python代碼
- 24.14 小結
- 24.13 調用main()函數
- 24.12 解密文件中的信息
- 24.11 將加密的內容寫入文件
- 24.10 從密鑰文件中讀取公鑰和私鑰
- 24.9 編寫decryptMessage()函數
- 24.8 編寫encryptMessage()函數
- 24.7 使用getTextFromBlocks()進行解密
- 24.6 通過getBlockFromText()函數將字符串轉換為分組
- 24.5 程序如何判斷加解密
- 24.4 程序的設置
- 24.3 公鑰密碼算法實現程序的運行樣例
- 24.2 實現公鑰密碼算法的源代碼
- 24.1 公鑰密碼算法的實現原理
- 第24章 編寫公鑰密碼算法
- 23.12 習題
- 23.11 小結
- 23.10 混合密碼體制
- 23.9 調用main()函數
- 23.8 通過makeKeyFiles()函數創建密鑰文件
- 23.7 通過generateKey()函數生成密鑰
- 23.6 創建main()函數
- 23.5 公鑰生成程序的示例運行
- 23.4 公鑰生成程序的源代碼
- 23.3 生成公鑰和私鑰的步驟
- 23.2 認證的問題
- 23.1 公鑰密碼體制
- 第23章 為公鑰密碼生成密鑰
- 22.12 習題
- 22.11 小結
- 22.10 生成大素數
- 22.9 尋找大素數
- 22.8 Rabin-Miller素性檢測算法
- 22.7 使用埃拉托斯特尼篩法生成素數
- 22.6 埃拉托斯特尼篩法
- 22.5 實現試除法檢測
- 22.4 試除法的原理
- 22.3 素數模塊的調用樣例
- 22.2 素數模塊的源代碼
- 22.1 什么是素數
- 第22章 素數的查找與生成
- 21.4 習題
- 21.3 小結
- 21.2 為什么兩次一密是維吉尼亞密碼
- 21.1 不可破解的一次一密
- 第21章 一次一密
- 20.18 習題
- 20.17 小結
- 20.16 改變破解程序中的常量
- 20.15 調用main()函數
- 20.14 返回破解后的消息
- 20.13 嘗試用可能的密鑰長度進行解密
- 20.12 找到由相同子密鑰加密的字母
- 20.11 找到最可能的密鑰長度
- 20.10 求得間隔數的因子
- 20.9 尋找重復序列
- 20.8 引入模塊、設置常量和創建main()函數
- 20.7 維吉尼亞密碼破解程序的運行樣例
- 20.6 維吉尼亞密碼破解程序的源代碼
- 20.5 運用Kasiski檢測確定密鑰長度
- 20.4 關于維吉尼亞密碼破解程序
- 20.3 維吉尼亞密碼字典式破解程序的運行樣例
- 20.2 維吉尼亞密碼字典式破解程序的源代碼
- 20.1 運用字典式攻擊暴力破解維吉尼亞密碼
- 第20章 破解維吉尼亞密碼
- 19.10 習題
- 19.9 小結
- 19.8 計算消息的頻率匹配分數
- 19.7 將消息中的字母按頻率大小排序
- 19.6 獲取元組的第一個成員
- 19.5 對消息中的字母進行計數
- 19.4 以“ETAOIN”順序保存字母
- 19.3 計算字母頻率的源碼
- 19.2 匹配字母頻率
- 19.1 分析文本中的字母頻率
- 第19章 頻率分析
- 18.9 習題
- 18.8 小結
- 18.7 調用main()函數
- 18.6 消息的加密與解密
- 18.5 使用List-Append-Join模式生成字符串
- 18.4 引入模塊、設置常量和創建main()函數
- 18.3 運行維吉尼亞密碼實現程序的樣例
- 18.2 維吉尼亞密碼實現程序的源代碼
- 18.1 在維吉尼亞密碼中使用多字母密鑰
- 第18章 編寫維吉尼亞密碼
- 17.14 習題
- 17.13 小結
- 17.12 調用main()函數
- 17.11 hackSimpleSub()函數
- 17.10 創建密文映射
- 17.9 向用戶顯示破解結果
- 17.8 創建main()函數
- 17.7 用正則表達式查找字符
- 17.6 創建模塊和常量
- 17.5 簡單代換破解程序的運行示例
- 17.4 簡單代換破解程序的源代碼
- 17.3 單詞模式模塊
- 17.2 破解程序總覽
- 17.1 使用單詞模式進行解密
- 第17章 破解簡單代換密碼
- 16.11 習題
- 16.10 小結
- 16.9 調用main()函數
- 16.8 生成隨機密鑰
- 16.7 translateMessage()函數
- 16.6 包裹函數
- 16.5 sort()列表方法
- 16.4 引入模塊、設置常量、創建main()函數
- 16.3 運行簡單代換密碼程序的樣例
- 16.2 簡單代換密碼程序的源代碼
- 16.1 簡單代換密碼的工作原理
- 第16章 編寫簡單代換密碼
- 15.7 習題
- 15.6 小結
- 15.5 調用main()函數
- 15.4 仿射密碼破解函數
- 15.3 創建模塊、常量和main()函數
- 15.2 仿射密碼破解程序的運行示例
- 15.1 仿射密碼破解程序的源代碼
- 第15章 破解仿射密碼
- 14.10 習題
- 14.9 小結
- 14.8 調用main()函數
- 14.7 生成隨機密鑰對
- 14.6 編寫解密函數
- 14.5 編寫加密函數
- 14.4 計算并驗證密鑰
- 14.3 引入模塊、設置常量并創建main()函數
- 14.2 運行仿射密碼程序的樣例
- 14.1 仿射密碼程序的源代碼
- 第14章 編寫仿射密碼
- 13.9 習題
- 13.8 小結
- 13.7 Cryptomath模塊的源代碼
- 13.6 理解乘法和仿射密碼的工作原理
- 13.5 歐幾里得算法求最大公約數
- 13.4 多重賦值
- 13.3 尋找因子并計算最大公約數
- 13.2 模運算符
- 13.1 模運算
- 第13章 仿射密碼的模運算模塊
- 12.9 習題
- 12.8 小結
- 12.7 調用main()函數
- 12.6 得到破解后的消息
- 12.5 展示破解密文的結果
- 12.4 使用三引號的多行字符串
- 12.3 導入模塊
- 12.2 運行破解置換密碼程序的樣例
- 12.1 破解置換密碼程序的源代碼
- 第12章 破解置換密碼
- 11.11 習題
- 11.10 小結
- 11.9 檢測英語單詞
- 11.8 刪除非字母字符
- 11.7 對消息中出現的英文單詞進行計數
- 11.6 運行字典文件
- 11.5 字典數據類型
- 11.4 指令和設置常量
- 11.3 英語檢測模塊的運行示例
- 11.2 英語檢測模塊的源代碼
- 11.1 計算機如何理解英語
- 第11章 編程檢測英語文本
- 10.13 習題
- 10.12 小結
- 10.11 調用main()函數
- 10.10 將輸出寫入文件
- 10.9 計算加/解密所需的時間
- 10.8 讀取作為輸入的文件
- 10.7 使用字符串方法令用戶的輸入更靈活
- 10.6 檢查文件是否存在
- 10.5 創建main()函數
- 10.4 文件操作
- 10.3 運行置換密碼加密文件程序的樣例
- 10.2 使用置換密碼加密文件的源代碼
- 10.1 純文本文件
- 第10章 文件的加密與解密
- 9.11 習題
- 9.10 小結
- 9.9 檢驗測試程序
- 9.8 調用main()函數
- 9.7 檢查密碼程序是否正常工作并結束程序
- 9.6 測試消息
- 9.5 創建隨機字符串
- 9.4 生成偽隨機數
- 9.3 導入模塊
- 9.2 運行置換密碼測試程序的示例
- 9.1 置換密碼測試程序的源代碼
- 第9章 編寫測試程序
- 8.8 習題
- 8.7 小結
- 8.6 調用main()函數
- 8.5 使用密鑰解密消息
- 8.4 導入模塊并創建主函數
- 8.3 運行置換密碼解密程序的樣例
- 8.2 置換密碼解密程序的源代碼
- 8.1 如何在紙上解密置換密碼
- 第8章 解密置換密碼
- 7.14 習題
- 7.13 小結
- 7.12 __name__變量
- 7.11 返回值和返回語句
- 7.10 join()字符串方法
- 7.9 隨消息移動currentIndex
- 7.8 增量賦值運算符
- 7.7 置換加密算法
- 7.6 數據類型:列表
- 7.5 以參數形式傳遞密鑰和消息
- 7.4 用def語句創建自定義函數
- 7.3 置換密碼加密程序的示例運行
- 7.2 置換密碼加密程序的源代碼
- 7.1 置換密碼如何工作
- 第7章 通過置換密碼實現加密
- 6.8 習題
- 6.7 小結
- 6.6 使用字符串標準化輸出密鑰及解密后的信息
- 6.5 解密消息
- 6.4 在循環中使用range()方法
- 6.3 設置變量
- 6.2 運行凱撒密碼破解程序的樣例
- 6.1 破解凱撒密碼的源代碼
- 第6章 用暴力算法破解凱撒密碼
- 5.13 習題
- 5.12 小結
- 5.11 加密其他字符
- 5.10 顯示和復制translated字符串
- 5.9 符號加密和解密
- 5.8 find()字符串方法
- 5.7 in和not in運算符
- 5.6 if語句
- 5.5 for循環語句
- 5.4 常量和變量
- 5.3 導入模塊并創建變量
- 5.2 凱撒密碼程序樣例運行
- 5.1 凱撒密碼程序的源代碼
- 第5章 凱撒密碼
- 4.13 習題
- 4.12 小結
- 4.11 用input()提示改進程序
- 4.10 “增長”字符串
- 4.9 while循環語句
- 4.8 代碼塊
- 4.7 比較操作符
- 4.6 Boolean數據類型
- 4.5 while循環
- 4.4 確定字符串的長度
- 4.3 設置注釋及變量
- 4.2 反向密碼程序的執行結果樣例
- 4.1 反向密碼程序的源代碼
- 第4章 反向密碼
- 3.11 習題
- 3.10 小結
- 3.9 “Hello World! ”程序如何工作
- 3.8 通過集成開發環境保存程序
- 3.7 使用在線比較工具檢查源代碼
- 3.6 “Hello World!”程序的源代碼
- 3.5 在集成開發環境的文件編輯器中編寫程序
- 3.4 引號和雙引號
- 3.3 打印轉義字符
- 3.2 用print()函數打印值
- 3.1 用字符串的值處理文本
- 第3章 字符串及編寫程序
- 2.10 習題
- 2.9 小結
- 2.8 變量名
- 2.7 重寫變量
- 2.6 用變量存儲數值
- 2.5 計算表達式的值
- 2.4 運算順序
- 2.3 表達式
- 2.2 整型和浮點數的值
- 2.1 簡單的數學表達式
- 第2章 在交互式運行環境中編程
- 1.6 習題
- 1.5 小結
- 1.4 為什么加密兩次不起作用
- 1.3 凱撒密碼
- 1.2 編碼與密碼
- 1.1 什么是密碼學
- 第1章 制作紙質密碼學工具
- 資源與支持
- 前言
- 致謝
- 審稿人簡介
- 作者簡介
- 內容提要
- 版權信息
- 封面
- 封面
- 版權信息
- 內容提要
- 作者簡介
- 審稿人簡介
- 致謝
- 前言
- 資源與支持
- 第1章 制作紙質密碼學工具
- 1.1 什么是密碼學
- 1.2 編碼與密碼
- 1.3 凱撒密碼
- 1.4 為什么加密兩次不起作用
- 1.5 小結
- 1.6 習題
- 第2章 在交互式運行環境中編程
- 2.1 簡單的數學表達式
- 2.2 整型和浮點數的值
- 2.3 表達式
- 2.4 運算順序
- 2.5 計算表達式的值
- 2.6 用變量存儲數值
- 2.7 重寫變量
- 2.8 變量名
- 2.9 小結
- 2.10 習題
- 第3章 字符串及編寫程序
- 3.1 用字符串的值處理文本
- 3.2 用print()函數打印值
- 3.3 打印轉義字符
- 3.4 引號和雙引號
- 3.5 在集成開發環境的文件編輯器中編寫程序
- 3.6 “Hello World!”程序的源代碼
- 3.7 使用在線比較工具檢查源代碼
- 3.8 通過集成開發環境保存程序
- 3.9 “Hello World! ”程序如何工作
- 3.10 小結
- 3.11 習題
- 第4章 反向密碼
- 4.1 反向密碼程序的源代碼
- 4.2 反向密碼程序的執行結果樣例
- 4.3 設置注釋及變量
- 4.4 確定字符串的長度
- 4.5 while循環
- 4.6 Boolean數據類型
- 4.7 比較操作符
- 4.8 代碼塊
- 4.9 while循環語句
- 4.10 “增長”字符串
- 4.11 用input()提示改進程序
- 4.12 小結
- 4.13 習題
- 第5章 凱撒密碼
- 5.1 凱撒密碼程序的源代碼
- 5.2 凱撒密碼程序樣例運行
- 5.3 導入模塊并創建變量
- 5.4 常量和變量
- 5.5 for循環語句
- 5.6 if語句
- 5.7 in和not in運算符
- 5.8 find()字符串方法
- 5.9 符號加密和解密
- 5.10 顯示和復制translated字符串
- 5.11 加密其他字符
- 5.12 小結
- 5.13 習題
- 第6章 用暴力算法破解凱撒密碼
- 6.1 破解凱撒密碼的源代碼
- 6.2 運行凱撒密碼破解程序的樣例
- 6.3 設置變量
- 6.4 在循環中使用range()方法
- 6.5 解密消息
- 6.6 使用字符串標準化輸出密鑰及解密后的信息
- 6.7 小結
- 6.8 習題
- 第7章 通過置換密碼實現加密
- 7.1 置換密碼如何工作
- 7.2 置換密碼加密程序的源代碼
- 7.3 置換密碼加密程序的示例運行
- 7.4 用def語句創建自定義函數
- 7.5 以參數形式傳遞密鑰和消息
- 7.6 數據類型:列表
- 7.7 置換加密算法
- 7.8 增量賦值運算符
- 7.9 隨消息移動currentIndex
- 7.10 join()字符串方法
- 7.11 返回值和返回語句
- 7.12 __name__變量
- 7.13 小結
- 7.14 習題
- 第8章 解密置換密碼
- 8.1 如何在紙上解密置換密碼
- 8.2 置換密碼解密程序的源代碼
- 8.3 運行置換密碼解密程序的樣例
- 8.4 導入模塊并創建主函數
- 8.5 使用密鑰解密消息
- 8.6 調用main()函數
- 8.7 小結
- 8.8 習題
- 第9章 編寫測試程序
- 9.1 置換密碼測試程序的源代碼
- 9.2 運行置換密碼測試程序的示例
- 9.3 導入模塊
- 9.4 生成偽隨機數
- 9.5 創建隨機字符串
- 9.6 測試消息
- 9.7 檢查密碼程序是否正常工作并結束程序
- 9.8 調用main()函數
- 9.9 檢驗測試程序
- 9.10 小結
- 9.11 習題
- 第10章 文件的加密與解密
- 10.1 純文本文件
- 10.2 使用置換密碼加密文件的源代碼
- 10.3 運行置換密碼加密文件程序的樣例
- 10.4 文件操作
- 10.5 創建main()函數
- 10.6 檢查文件是否存在
- 10.7 使用字符串方法令用戶的輸入更靈活
- 10.8 讀取作為輸入的文件
- 10.9 計算加/解密所需的時間
- 10.10 將輸出寫入文件
- 10.11 調用main()函數
- 10.12 小結
- 10.13 習題
- 第11章 編程檢測英語文本
- 11.1 計算機如何理解英語
- 11.2 英語檢測模塊的源代碼
- 11.3 英語檢測模塊的運行示例
- 11.4 指令和設置常量
- 11.5 字典數據類型
- 11.6 運行字典文件
- 11.7 對消息中出現的英文單詞進行計數
- 11.8 刪除非字母字符
- 11.9 檢測英語單詞
- 11.10 小結
- 11.11 習題
- 第12章 破解置換密碼
- 12.1 破解置換密碼程序的源代碼
- 12.2 運行破解置換密碼程序的樣例
- 12.3 導入模塊
- 12.4 使用三引號的多行字符串
- 12.5 展示破解密文的結果
- 12.6 得到破解后的消息
- 12.7 調用main()函數
- 12.8 小結
- 12.9 習題
- 第13章 仿射密碼的模運算模塊
- 13.1 模運算
- 13.2 模運算符
- 13.3 尋找因子并計算最大公約數
- 13.4 多重賦值
- 13.5 歐幾里得算法求最大公約數
- 13.6 理解乘法和仿射密碼的工作原理
- 13.7 Cryptomath模塊的源代碼
- 13.8 小結
- 13.9 習題
- 第14章 編寫仿射密碼
- 14.1 仿射密碼程序的源代碼
- 14.2 運行仿射密碼程序的樣例
- 14.3 引入模塊、設置常量并創建main()函數
- 14.4 計算并驗證密鑰
- 14.5 編寫加密函數
- 14.6 編寫解密函數
- 14.7 生成隨機密鑰對
- 14.8 調用main()函數
- 14.9 小結
- 14.10 習題
- 第15章 破解仿射密碼
- 15.1 仿射密碼破解程序的源代碼
- 15.2 仿射密碼破解程序的運行示例
- 15.3 創建模塊、常量和main()函數
- 15.4 仿射密碼破解函數
- 15.5 調用main()函數
- 15.6 小結
- 15.7 習題
- 第16章 編寫簡單代換密碼
- 16.1 簡單代換密碼的工作原理
- 16.2 簡單代換密碼程序的源代碼
- 16.3 運行簡單代換密碼程序的樣例
- 16.4 引入模塊、設置常量、創建main()函數
- 16.5 sort()列表方法
- 16.6 包裹函數
- 16.7 translateMessage()函數
- 16.8 生成隨機密鑰
- 16.9 調用main()函數
- 16.10 小結
- 16.11 習題
- 第17章 破解簡單代換密碼
- 17.1 使用單詞模式進行解密
- 17.2 破解程序總覽
- 17.3 單詞模式模塊
- 17.4 簡單代換破解程序的源代碼
- 17.5 簡單代換破解程序的運行示例
- 17.6 創建模塊和常量
- 17.7 用正則表達式查找字符
- 17.8 創建main()函數
- 17.9 向用戶顯示破解結果
- 17.10 創建密文映射
- 17.11 hackSimpleSub()函數
- 17.12 調用main()函數
- 17.13 小結
- 17.14 習題
- 第18章 編寫維吉尼亞密碼
- 18.1 在維吉尼亞密碼中使用多字母密鑰
- 18.2 維吉尼亞密碼實現程序的源代碼
- 18.3 運行維吉尼亞密碼實現程序的樣例
- 18.4 引入模塊、設置常量和創建main()函數
- 18.5 使用List-Append-Join模式生成字符串
- 18.6 消息的加密與解密
- 18.7 調用main()函數
- 18.8 小結
- 18.9 習題
- 第19章 頻率分析
- 19.1 分析文本中的字母頻率
- 19.2 匹配字母頻率
- 19.3 計算字母頻率的源碼
- 19.4 以“ETAOIN”順序保存字母
- 19.5 對消息中的字母進行計數
- 19.6 獲取元組的第一個成員
- 19.7 將消息中的字母按頻率大小排序
- 19.8 計算消息的頻率匹配分數
- 19.9 小結
- 19.10 習題
- 第20章 破解維吉尼亞密碼
- 20.1 運用字典式攻擊暴力破解維吉尼亞密碼
- 20.2 維吉尼亞密碼字典式破解程序的源代碼
- 20.3 維吉尼亞密碼字典式破解程序的運行樣例
- 20.4 關于維吉尼亞密碼破解程序
- 20.5 運用Kasiski檢測確定密鑰長度
- 20.6 維吉尼亞密碼破解程序的源代碼
- 20.7 維吉尼亞密碼破解程序的運行樣例
- 20.8 引入模塊、設置常量和創建main()函數
- 20.9 尋找重復序列
- 20.10 求得間隔數的因子
- 20.11 找到最可能的密鑰長度
- 20.12 找到由相同子密鑰加密的字母
- 20.13 嘗試用可能的密鑰長度進行解密
- 20.14 返回破解后的消息
- 20.15 調用main()函數
- 20.16 改變破解程序中的常量
- 20.17 小結
- 20.18 習題
- 第21章 一次一密
- 21.1 不可破解的一次一密
- 21.2 為什么兩次一密是維吉尼亞密碼
- 21.3 小結
- 21.4 習題
- 第22章 素數的查找與生成
- 22.1 什么是素數
- 22.2 素數模塊的源代碼
- 22.3 素數模塊的調用樣例
- 22.4 試除法的原理
- 22.5 實現試除法檢測
- 22.6 埃拉托斯特尼篩法
- 22.7 使用埃拉托斯特尼篩法生成素數
- 22.8 Rabin-Miller素性檢測算法
- 22.9 尋找大素數
- 22.10 生成大素數
- 22.11 小結
- 22.12 習題
- 第23章 為公鑰密碼生成密鑰
- 23.1 公鑰密碼體制
- 23.2 認證的問題
- 23.3 生成公鑰和私鑰的步驟
- 23.4 公鑰生成程序的源代碼
- 23.5 公鑰生成程序的示例運行
- 23.6 創建main()函數
- 23.7 通過generateKey()函數生成密鑰
- 23.8 通過makeKeyFiles()函數創建密鑰文件
- 23.9 調用main()函數
- 23.10 混合密碼體制
- 23.11 小結
- 23.12 習題
- 第24章 編寫公鑰密碼算法
- 24.1 公鑰密碼算法的實現原理
- 24.2 實現公鑰密碼算法的源代碼
- 24.3 公鑰密碼算法實現程序的運行樣例
- 24.4 程序的設置
- 24.5 程序如何判斷加解密
- 24.6 通過getBlockFromText()函數將字符串轉換為分組
- 24.7 使用getTextFromBlocks()進行解密
- 24.8 編寫encryptMessage()函數
- 24.9 編寫decryptMessage()函數
- 24.10 從密鑰文件中讀取公鑰和私鑰
- 24.11 將加密的內容寫入文件
- 24.12 解密文件中的信息
- 24.13 調用main()函數
- 24.14 小結
- 附錄 調試Python代碼
- 調試器如何工作
- 調試反向密碼程序
- 設置斷點
- 小結 更新時間:2020-05-20 09:13:11