Python密码学编程,由人民邮电出版社在2016-08-01月出版发行,本书编译以及作者信息为: [美] Al Sweigart(斯维加特) 著,李永伦 译,这是第1次发行, 国际标准书号为:9787115424297,品牌为异步图书, 这本书采用平装开本为16开,纸张采为胶版纸,全书共有324页,字数万字,值得推荐。
此书内容摘要
Python是一种高级程序设计语言,因其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。同时,Python语言在算法领域也得到了很好的应用。
本书通过理论和实例相结合的方式介绍了多种加密算法。全书共分24章,由浅入深地介绍了与密码学编程相关的各类基础知识、编程技巧以及算法实现。除此之外,本书还提供了相应的源码下载资源,以供读者更好地进行探索和学习。
本书适合Python初学者和密码学的初学者,也适合信息安全从业人员。
关于此书作者
Al Sweigart是加利福尼亚州旧金山的一名软件开发者。他很喜欢骑自行车、当志愿者、泡咖啡吧以及开发有用的软件。他编写了《Python游戏编程快速上手》《Python和Pygame游戏开发指南》《Python密码学编程》《Python编程快速上手——让繁琐工作自动化》等图书,深受读者欢迎。他生于德克萨斯的休斯顿。他在德克萨斯大学Austin分校读完了计算机学位。
编辑们的推荐
本书是学习用Python编程实现加密算法的初学者指南。本书采用的示例源代码,是几个加密算法及其破解程序,包括凯撒密码、换位加密法、乘数加密法、仿射加密法、简单代替加密法、维吉尼亚加密法等,以及这些加密法的破解程序。本书的后一章还介绍了现代RSA加密法和公钥加密法。
本书适合Python初学者和密码学的初学者,也适合信息安全从业人员。
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.8A组练习6
1.9不用纸质工具做加密7
1.10B组练习9
1.11双重强度加密9
1.12通过计算机编程进行加密9
第2章Pygame基础知识11
2.1下载和安装Python11
2.1.1Windows安装步骤11
2.1.2OS X安装步骤12
2.1.3Ubuntu和Linux安装步骤12
2.2下载pyperclip.py12
2.3启动IDLE12
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 Shell20
3.1一些简单的数学知识20
3.2整数和浮点数21
3.3表达式21
3.4运算符顺序22
3.5计算表达式22
3.6错误是可以接受的22
3.7A组练习23
3.8每个值都有一个数据类型23
3.9通过赋值语句把值存到变量里23
3.10重写变量24
3.11使用多个变量25
3.12变量名26
3.13驼峰式大小写26
3.14B组练习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.7A组练习32
4.8索引操作33
4.9负索引33
4.10分片操作34
4.11空分片索引35
4.12B组练习35
4.13在IDLE的文件编辑器里写程序35
4.14Hello World!36
4.15Hello World的源代码36
4.16保存你的程序37
4.17运行你的程序37
4.18打开你保存的程序38
4.19“Hello World”程序如何工作38
4.20注释38
4.21函数39
4.22print()函数39
4.23input()函数39
4.24结束程序40
4.25C组练习40
4.26总结40
第5章反转加密41
5.1反转加密41
5.2反转加密程序的源代码41
5.3运行反转加密程序42
5.4用在线比较工具检查你的源代码42
5.5这个程序如何工作43
5.6len()函数43
5.7while循环简介44
5.8布尔数据类型44
5.9比较运算符45
5.10条件46
5.11代码块47
5.12while循环语句47
5.13“增长”一个字符串48
5.14一步一步跟踪程序50
5.15在我们的程序里使用input()52
5.16A组练习52
5.17总结52
第6章凯撒加密法53
6.1实现程序53
6.2凯撒加密程序的源代码53
6.3运行凯撒加密程序54
6.4使用在线比较工具检查你的
源代码55
6.5A组练习55
6.6这个程序如何工作55
6.7使用import语句导入模块55
6.8常量56
6.9upper()和lower()字符串方法57
6.10for循环语句58
6.11相当于for循环的while循环59
6.12B组练习59
6.13if语句59
6.14else语句60
6.15elif语句60
6.16in和not in运算符61
6.17find()字符串方法62
6.18C组练习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.6range()函数69
7.7回到代码70
7.8字符串格式化72
7.9A组练习72
7.10总结72
第8章使用换位加密法加密73
8.1换位加密法73
8.2A组练习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.12global语句79
8.13B组练习81
8.14列表数据类型81
8.15使用list()函数把区间对象转换
成列表82
8.16重新赋值列表里的项83
8.17重新赋值字符串里的字符83
8.18列表的列表83
8.19C组练习84
8.20在列表上使用len()和in运算符84
8.21使用+和*运算符的列表连接和
复制85
8.22D组练习85
8.23换位加密算法85
8.24增强赋值运算符88
8.25回到代码88
8.26join()字符串方法90
8.27返回值和return语句91
8.28E组练习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.6math.ceil()、math.floor()和round()函数98
9.7and和or布尔运算符101
9.8B组练习102
9.9真值表102
9.10and和or运算符可以简化代码103
9.11布尔运算符的运算顺序103
9.12回到代码103
9.13C组练习105
9.14总结105
第10章写一个程序测试我们的程序106
10.1换位加密法测试程序的源代码106
10.2运行换位加密法测试程序107
10.3这个程序如何工作108
10.4伪随机数和random.seed()
函数108
10.5random.randint()函数109
10.6引用110
10.7copy.deepcopy()函数112
10.8A组练习112
10.9random.shuffle()函数112
10.10随机打乱一个字符串113
10.11回到代码114
10.12sys.exit()函数114
10.13测试我们的测试程序115
10.14总结116
第11章加密和解密文件117
11.1纯文本文件117
11.2换位加密法文件加密程序的
源代码118
11.3运行换位加密法文件加密程序120
11.4读取文件120
11.4.1open()函数和文件对象120
11.4.2read()文件对象方法120
11.4.3close()文件对象方法121
11.5写入文件121
11.5.1write()文件对象方法122
11.6这个程序如何工作122
11.7os.path.exists()函数123
11.8startswith()和endswith()字符串方法123
11.9title()字符串方法124
11.10time模块和time.time()函数125
11.11回到代码126
11.12A组练习126
11.13总结127
第12章通过编程检测英文128
12.1计算机如何理解英文128
12.2A组练习130
12.3检测英文模块130
12.4检测英文模块的源代码130
12.5这个程序如何工作131
12.6词典和词典数据类型132
12.7添加或修改词典里的项132
12.8B组练习133
12.9在词典上使用len()函数133
12.10在词典上使用in运算符133
12.11在词典上使用for循环134
12.12C组练习134
12.13词典与列表之间的区别134
12.14在词典上查找项比在列表上
更快135
12.15split()方法135
12.16暂无.值136
12.17回到代码136
12.18“除以零”错误138
12.19float()、int()和str()函数以及
整数除法138
12.20D组练习139
12.21回到代码139
12.22append()列表方法139
12.23默认参数值140
12.24计算比例141
12.25E组练习142
12.26总结143
第13章破译换位加密法144
13.1换位加密法破译程序的源代码144
13.2运行换位加密法破译程序145
13.3这个程序如何工作146
13.4使用三引号的多行字符串146
13.5回到代码147
13.6strip()字符串方法148
13.7A组练习150
13.8总结150
第14章取模运算与乘数加密法和
仿射加密法151
14.1噢,不,数学!151
14.2数学,噢耶!151
14.3取模运算(又名时钟运算)151
14.4取模运算符%152
14.5A组练习153
14.6GCD:最大公约数(又名最大
公因数)153
14.7使用古氏积木(Cuisenaire rods)可视化因数和GCD154
14.8B组练习155
14.9多重赋值155
14.10通过多重赋值交换值156
14.11找出两个数字的GCD的
欧几里得算法156
14.12“互质”157
14.13C组练习157
14.14乘数加密法157
14.15D组练习159
14.16乘数加密法 + 凯撒加密法 =
仿射加密法159
14.17仿射密钥的第一个问题159
14.18使用仿射加密法解密160
14.19找出模逆161
14.20//整数除法运算符161
14.21cryptomath模块的源代码162
14.22E组练习163
14.23总结163
第15章仿射加密法164
15.1仿射加密法程序的源代码164
15.2运行仿射加密法程序166
15.3A组练习166
15.4这个程序如何工作166
15.5把一个密钥分成两个密钥167
15.6元祖数据类型168
15.7密钥的输入验证168
15.8仿射加密法加密函数169
15.9仿射加密法解密函数170
15.10生成随机密钥171
15.11仿射密钥的第二个问题:仿射加密法可以有多少个密钥172
15.12总结173
第16章破译仿射加密法174
16.1仿射加密法破译程序的
源代码174
16.2运行仿射加密法破译程序175
16.3这个程序如何工作176
16.4仿射加密法破译函数177
16.5**指数运算符177
16.6continue语句178
16.7A组练习180
16.8总结180
第17章简单替代加密法181
17.1使用纸笔实现简单替代加密法181
17.2A组练习182
17.3简单替代加密法的源代码182
17.4运行简单替代加密法程序183
17.5这个程序如何工作184
17.6程序的main()函数184
17.7sort()列表方法185
17.8包装器函数186
17.9程序的translateMessage()
函数187
17.10isupper()和islower()字符串
方法189
17.11B组练习190
17.12生成随机密钥190
17.13加密空格和标点符号191
17.14C组练习191
17.15总结192
第18章破译简单替代加密法193
18.1计算单词模式193
18.2获取密词的候选单词列表194
18.3A组练习195
18.4单词模式模块的源代码195
18.5运行单词模式模块196
18.6这个程序如何工作197
18.7pprint.pprint()和pprint.
pformat()函数197
18.8在Python里使用列表创建
字符串198
18.9计算单词模式199
18.10单词模式程序的main()函数200
18.11破译简单替代加密法202
18.12简单替代破译程序的源代码202
18.13破译简单替代加密法(理论)205
18.14使用Interactive Shell探索
破译函数205
18.15这个程序如何工作209
18.16导入所有东西209
18.17正则表达式和sub()正则方法
简介210
18.18破译程序的main()函数211
18.19部分破译加密法211
18.20空密字映射212
18.21把字母添加到密字映射213
18.22计算两个字母映射的交集214
18.23从密字映射移除已经破译的
字母215
18.24破译简单替代加密法217
18.25从密字映射创建密钥219
18.26我们不能把空格也加密吗220
18.27总结220
第19章维吉尼亚加密法221
19.1不可破译的加密法221
19.2维吉尼亚密钥里的多个“密钥”221
19.3维吉尼亚加密法程序的源代码224
19.4运行维吉尼亚加密法程序226
19.5这个程序如何工作227
19.6总结230
第20章频率分析231
20.1字母频率和ETAOIN231
20.1.1匹配字母频率232
20.1.2计算频率匹配分值的例子233
20.1.3另一个计算频率匹配分值的例子233
20.1.4破译每个子密钥234
20.2匹配字母频率的代码234
20.3这个程序如何工作236
20.4最常见的字母“ETAOIN”237
20.5这个程序的getLettersCount()
函数237
20.6这个程序的getItemAtIndex
Zero()函数238
20.7这个程序的getFrequencyOrder()函数238
20.8sort()方法的key和reverse关键字参数239
20.9把函数作为值传递240
20.10通过keys()、values()和items()词典方法把词典转换成列表241
20.11对词典的项进行排序242
20.12这个程序的englishFreqMatch
Score()函数243
20.13总结244
第21章破译维吉尼亚加密法245
21.1词典攻击245
21.2维吉尼亚词典攻击程序的源代码245
21.3运行维吉尼亚词典破译程序246
21.4readlines()文件对象方法247
21.5巴贝奇攻击和卡西斯基试验247
21.6卡西斯基试验的第1步——
找出重复序列的间距247
21.7卡西斯基试验的第2步——
获取间距的因数248
21.8从字符串获取每隔N个字母249
21.9频率分析249
21.10暴力破译可能密钥251
21.11维吉尼亚破译程序的源代码251
21.12运行维吉尼亚破译程序256
21.13这个程序如何工作258
21.14找出重复序列259
21.15计算因数260
21.16通过set()函数来移除重复值261
21.17卡西斯基测试算法263
21.18extend()列表方法264
21.19print()的end关键字参数268
21.20itertools.product()函数269
21.21break语句272
21.22A组练习273
21.23修改破译程序的常量273
21.24总结274
第22章一次密码本加密法275
22.1牢不可破的一次密码本加密法275
22.2为什么一次密码本加密法是
牢不可破的275
22.3小心伪随机276
22.4小心二次密码本加密法277
22.5二次密码本加密法就是维吉尼亚加密法277
22.6A组练习278
22.7总结278
第23章寻找质数279
23.1质数279
23.2合数280
23.3质数筛选模块的源代码280
23.4这个程序如何工作281
23.5如何判断一个数字是不是质数282
23.6埃拉托色尼筛选法283
23.7primeSieve()函数284
23.8检测质数285
23.9拉宾米勒模块的源代码285
23.10运行拉宾米勒模块287
23.11这个程序如何工作287
23.12拉宾米勒算法287
23.13新的经过改进的isPrime()函数288
23.14总结289
第24章公钥密码学和RSA加密法291
24.1公钥密码学291
24.2“课本”RSA的危险292
24.3身份验证的问题292
24.4中间人攻击293
24.5生成公钥和私钥293
24.6RSA密钥生成程序的源代码294
24.7运行RSA密钥生成程序295
24.8这个密钥生成程序如何工作296
24.9这个程序的generateKey()函数297
24.10RSA密钥文件格式299
24.11混合加密机制300
24.12RSA加密法程序的源代码300
24.13运行RSA加密法程序303
24.14A组练习304
24.15数字签名304
24.16RSA加密法程序如何工作306
24.17ASCII:使用数字来表示字符307
24.18chr()和ord()函数308
24.19B组练习308
24.20区块308
24.21使用getBlocksFromText()把
字符串转成区块311
24.22encode()字符串方法和字节数
据类型311
24.23bytes()函数和decode()bytes
方法312
24.24C组练习312
24.25回到代码313
24.26min()和max()函数313
24.27insert()列表方法315
24.28RSA加密和解密的数学运算316
24.29pow()函数317
24.30从密钥文件读取公钥和私钥318
24.31完整的RSA加密流程318
24.32完整的RSA解密流程320
24.33D组练习321
24.34我们为什么不能破译RSA
加密法321
24.35总结323
部分内容试读
暂无.
关于此书评价
暂无.
书摘内容
暂无.
Python密码学编程最新最全的试读、书评、目录、简介信息由Python中文网整理提供。
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试