内容简介:
本书主要介绍了加密算法,同时从Python编程的角度来引导读者将加密算法更好地实现。书中不仅讲述了详细的算法理论,还附以详细的代码示例帮助读者更好地学习算法,并最终实现加密算法。除此之外,书中还提供了相应的源码下载资源,能够让读者获取到最完整真实的代码示例,帮助读者更好地进行后续的开发和学习。
作者简介:
Al Sweigart是加利福尼亚州旧金山的一名软件开
发者。他很喜欢骑自行车、当志愿者、泡咖啡吧以
及开发有用的软件。他编写了《Python游戏编程
快速上手》《Python和Pygame游戏开发指南》
《Python密码学编程》《Python编程快速上手——让繁琐工作自
动化》等图书,深受读者欢迎。他生于德克萨斯的休斯顿。他在德
克萨斯大学Austin分校读完了计算机科学学位。
资源目录:
第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