《Python密码学编程》是2016年8月人民邮电出版社出版的图书,作者是斯维加特。
基本简介
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