返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:
本店所有商品

  • [正版]出版社 Python密码学编程第二2版 密码学 Python 编程 信息安全 加密算法 软件开发 人民邮电出版
  • 正版图书!品质保证!默认发最新版本!收藏店铺可享优先发货!
    • 作者: 阿尔·斯维加特著 | | 郑新芳译
    • 出版社: 人民邮电出版社
    • 出版时间:1
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    友一个文化制品专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品参数
    • 作者: 阿尔·斯维加特著| 郑新芳译
    • 出版社:人民邮电出版社
    • 出版时间:1
    • 开本:16开
    • ISBN:9780838459963
    • 版权提供:人民邮电出版社

            铺公告

      为保障消费者合理购买需求及公平交易机会,避免因非生活消费目的的购买货囤积商品,抬价转售等违法行为发生,店铺有权对异常订单不发货且不进行赔付。异常订单:包括但不限于相同用户ID批量下单,同一用户(指不同用户ID,存在相同/临近/虚构收货地址,或相同联系号码,收件人,同账户付款人等情形的)批量下单(一次性大于5本),以及其他非消费目的的交易订单。

    温馨提示:请务必当着快递员面开箱验货,如发现破损,请立即拍照拒收,如验货有问题请及时联系在线客服处理,(如开箱验货时发现破损,所产生运费由我司承担,一经签收即为货物完好,如果您未开箱验货,一切损失就需要由买家承担,所以请买家一定要仔细验货)。

      关于退货运费:对于下单后且物流已发货货品在途的状态下,原则上均不接受退货申请,如顾客原因退货需要承担来回运费,如因产品质量问题(非破损问题)可在签收后,联系在线客服。

     

     


    内容介绍

    自互联网面世以来,网络安全一直是人们所重视的问题。从20世纪中叶开始,流传千百年的密码算法纷纷被投入到了网络安全的应用中;随后,在20世纪70年代,与古典密码完全不同的密码体制——公钥密码算法横空出世,密码学的发展完成了一次飞跃。 Python诞生于20世纪90年代,它是一种面向对象语言特点与解释型语言特点相结合的*级程序设计语言,已经得到了大规模应用。本书将Python语言与密码学结合起来,从简单的古典密码算法开始,一直到公钥密码算法,进行了简洁而细致的说明与解读。每一种密码算法的讲解包括原理部分、实现部分和破解部分(公钥算法不包括破解部分),其中后两者附有详细的Python代码,注释简洁明了,可读性极高。每章的末尾还提供了一些习题,帮助读者巩固所学知识并进行深入理解。 本书适合任何想要学习Python编程并对密码学抱有兴趣的读者。本书对Python编程的基础要求不高,初学者可以放心地阅读本书。相信本书一定能够为读者带来绝*的阅读体验。
    目录

    第 1章 制作纸质密码学工具 1
    1.1 什么是密码学 1
    1.2 编码与密码 2
    1.3 凯撒密码 3
    1.3.1 密码轮 3
    1.3.2 使用密码轮进行加密 4
    1.3.3 使用密码轮进行解密 5
    1.3.4 通过计算进行加密和解密 5
    1.4 为什么加密两次不起作用 6
    1.5 小结 7
    1.6 习题 7
    第 2章 在交互式运行环境中编程 8
    2.1 简单的数学表达式 8
    2.2 整型和浮点数的值 9
    2.3 表达式 10
    2.4 运算顺序 10
    2.5 计算表达式的值 10
    2.6 用变量存储数值 12
    2.7 重写变量 13
    2.8 变量名 14
    2.9 小结 14
    2.10 习题 15
    第3章 字符串及编写程序 16
    3.1 用字符串的值处理文本 16
    3.1.1 “+”运算符实现字符串拼接 17
    3.1.2 “*”运算符实现字符串复制 18
    3.1.3 通过索引获得字符串中的字符 18
    3.2 用print()函数打印值 21
    3.3 打印转义字符 22
    3.4 引号和双引号 23
    3.5 在集成开发环境的文件编辑器中编写程序 23
    3.6 “Hello, World!”程序的源代码 24
    3.7 使用在线比较工具检查源代码 25
    3.8 通过集成开发环境保存程序 26
    3.8.1 保存程序 26
    3.8.2 运行程序 26
    3.8.3 打开保存的程序 27
    3.9 “Hello, World! ”程序如何工作 27
    3.9.1 注释 28
    3.9.2 打印指示信息 28
    3.9.3 接收输入 28
    3.9.4 完成程序 29
    3.10 小结 29
    3.11 习题 30
    第4章 反向密码 31
    4.1 反向密码程序的源代码 31
    4.2 反向密码程序的执行结果样例 32
    4.3 设置注释及变量 32
    4.4 确定字符串的长度 33
    4.5 while循环 33
    4.6 Boolean数据类型 34
    4.7 比较操作符 34
    4.8 代码块 36
    4.9 while循环语句 37
    4.10 “增长”字符串 38
    4.11 用input()提示改进程序 40
    4.12 小结 41
    4.13 习题 41
    第5章 凯撒密码 42
    5.1 凯撒密码程序的源代码 42
    5.2 凯撒密码程序样例运行 43
    5.3 导入模块并创建变量 44
    5.4 常量和变量 45
    5.5 for循环语句 45
    5.5.1 for循环的示例 46
    5.5.2 等价于for循环的while循环 46
    5.6 if语句 47
    5.6.1 if语句的示例 47
    5.6.2 else语句 48
    5.6.3 elif语句 48
    5.7 in和not in运算符 49
    5.8 find()字符串方法 50
    5.9 符号加密和解密 51
    5.9.1 实现“回环” 51
    5.9.2 处理符号集以外的符号 52
    5.10 显示和复制translated字符串 52
    5.11 加密其他字符 53
    5.12 小结 53
    5.13 习题 54
    第6章 用暴力算法破解凯撒密码 56
    6.1 破解凯撒密码的源代码 56
    6.2 运行凯撒密码破解程序的样例 57
    6.3 设置变量 58
    6.4 在循环中使用range()方法 58
    6.5 解密消息 59
    6.6 使用字符串标准化输出密钥及
    解密后的信息 60
    6.7 小结 61
    6.8 习题 62
    第7章 通过置换密码实现加密 63
    7.1 置换密码如何工作 63
    7.1.1 手动加密消息 64
    7.1.2 创建加密程序 65
    7.2 置换密码加密程序的源代码 66
    7.3 置换密码加密程序的示例运行 67
    7.4 用def语句创建自定义函数 67
    7.4.1 定义用形参接收实参的函数 68
    7.4.2 更改仅存在于函数中的形参 68
    7.4.3 定义main()函数 69
    7.5 以参数形式传递密钥和消息 70
    7.6 数据类型:列表 70
    7.6.1 对列表中的项重新赋值 71
    7.6.2 多级列表 72
    7.6.3 对列表使用len()和in运算符 72
    7.6.4 用+和*运算符连接和复制列表 73
    7.7 置换加密算法 74
    7.8 增量赋值运算符 75
    7.9 随消息移动currentIndex 75
    7.10 join()字符串方法 77
    7.11 返回值和返回语句 77
    7.11.1 return语句示例 78
    7.11.2 返回加密得到的密文 78
    7.12 __name__变量 78
    7.13 小结 79
    7.14 习题 80
    第8章 解密置换密码 81
    8.1 如何在纸上解密置换密码 81
    8.2 置换密码解密程序的源代码 82
    8.3 运行置换密码解密程序的样例 84
    8.4 导入模块并创建主函数 84
    8.5 使用密钥解密消息 84
    8.5.1 round()、math.ceil()和math.floor()方法 85
    8.5.2 decryptMessage()函数 86
    8.5.3 布尔操作符 87
    8.5.4 使用and和or操作符往往是一条捷径 89
    8.5.5 布尔操作符的运算顺序 90
    8.5.6 调整变量column和row的值 90
    8.6 调用main()函数 92
    8.7 小结 92
    8.8 习题 92
    第9章 编写测试程序 94
    9.1 置换密码测试程序的源代码 94
    9.2 运行置换密码测试程序的示例 95
    9.3 导入模块 96
    9.4 生成伪随机数 96
    9.5 创建随机字符串 97
    9.5.1 将字符串复制随机次 98
    9.5.2 列表变量使用引用 98
    9.5.3 传递引用 101
    9.5.4 使用copy.deepcopy()复制列表 101
    9.5.5 random.shuffle()函数 101
    9.5.6 随机打乱字符串 102
    9.6 测试消息 102
    9.7 检查密码程序是否正常工作并
    结束程序 103
    9.8 调用main()函数 104
    9.9 检验测试程序 104
    9.10 小结 104
    9.11 习题 105
    第 10章 文件的加密与解密 106
    10.1 纯文本文件 106
    10.2 使用置换密码加密文件的
    源代码 107
    10.3 运行置换密码加密文件程序的
    样例 108
    10.4 文件操作 109
    10.4.1 打开文件 109
    10.4.2 数据写入及文件关闭 109
    10.4.3 读取文件 110
    10.5 创建main()函数 111
    10.6 检查文件是否存在 111
    10.6.1 os.path.exists() 方法 111
    10.6.2 使用os.path.exists()方法检查
    输入的文件是否存在 112
    10.7 使用字符串方法令用户的输入
    更灵活 112
    10.7.1 upper()、lower()和title()字符串
    方法 112
    10.7.2 startswith()和endswith()方法 113
    10.7.3 在程序中使用上述字符串方法 113
    10.8 读取作为输入的文件 114
    10.9 计算加/解密所需的时间 114
    10.9.1 time模块和time.time()方法 114
    10.9.2 在程序中使用time.time()方法 115
    10.10 将输出写入文件 115
    10.11 调用main()函数 116
    10.12 小结 116
    10.13 习题 117
    第 11章 编程检测英语文本 118
    11.1 计算机如何理解英语 118
    11.2 英语检测模块的源代码 120
    11.3 英语检测模块的运行示例 121
    11.4 指令和设置常量 121
    11.5 字典数据类型 122
    11.5.1 字典和列表之间的区别 123
    11.5.2 在字典中添加或更改项 123
    11.5.3 对字典使用len()函数 124
    11.5.4 对字典使用in运算符 124
    11.5.5 用字典检索项比用列表更快 125
    11.5.6 在字典上使用循环 125
    11.6 运行字典文件 125
    11.6.1 split()方法 126
    11.6.2 将字典文件分割成单个单词 126
    11.6.3 返回字典数据 127
    11.7 对消息中出现的英文单词进行
    计数 127
    11.7.1 除数为零错误 128
    11.7.2 对匹配上的英语单词进行计数 128
    11.7.3 float()、int()和str()函数及整数
    除法 129
    11.7.4 获得message中英语单词的
    比例 129
    11.8 删除非字母字符 130
    11.8.1 append()列表方法 130
    11.8.2 创建字母组成的字符串 131
    11.9 检测英语单词 131
    11.9.1 使用默认参数 132
    11.9.2 计算百分比 132
    11.10 小结 134
    11.11 习题 134
    第 12章 破解置换密码 136
    12.1 破解置换密码程序的源代码 136
    12.2 运行破解置换密码程序的样例 137
    12.3 导入模块 138
    12.4 使用三引号的多行字符串 138
    12.5 展示破解密文的结果 139
    12.6 得到破解后的消息 140
    12.6.1 strip()字符串方法 141
    12.6.2 应用strip()字符串方法 142
    12.6.3 破解失败 142
    12.7 调用main()函数 143
    12.8 小结 143
    12.9 习题 143
    第 13章 仿射密码的模运算模块 144
    13.1 模运算 144
    13.2 模运算符 145
    13.3 寻找因子并计算*大公约数 146
    13.4 多重赋值 147
    13.5 欧几里得算法求*大公约数 148
    13.6 理解乘法和仿射密码的工作
    原理 149
    13.6.1 为乘法密码选择有效的密钥 150
    13.6.2 仿射密码加密 150
    13.6.3 仿射密码解密 151
    13.6.4 计算模逆 152
    13.6.5 整数除法运算符 152
    13.7 Cryptomath模块的源代码 153
    13.8 小结 154
    13.9 习题 154
    第 14章 编写仿射密码 155
    14.1 仿射密码程序的源代码 155
    14.2 运行仿射密码程序的样例 157
    14.3 引入模块、设置常量并创建
    main()函数 157
    14.4 计算并验证密钥 158
    14.4.1 元组数据类型 159
    14.4.2 检验弱密钥 159
    14.4.3 仿射密码共有多少种密钥组合 160
    14.5 编写加密函数 162
    14.6 编写解密函数 163
    14.7 生成随机密钥对 164
    14.8 调用main()函数 164
    14.9 小结 165
    14.10 习题 165
    第 15章 破解仿射密码 166
    15.1 仿射密码破解程序的源代码 166
    15.2 仿射密码破解程序的运行示例 167
    15.3 创建模块、常量和main()函数 168
    15.4 仿射密码破解函数 169
    15.4.1 乘方运算符 169
    15.4.2 计算可能密钥的总数 169
    15.4.3 continue语句 170
    15.4.4 使用continue跳过代码 171
    15.5 调用main()函数 172
    15.6 小结 172
    15.7 习题 173
    第 16章 编写简单代换密码 174
    16.1 简单代换密码的工作原理 174
    16.2 简单代换密码程序的源代码 175
    16.3 运行简单代换密码程序的样例 177
    16.4 引入模块、设置常量、创建
    main()函数 177
    16.5 sort()列表方法 179
    16.6 包裹函数 179
    16.7 translateMessage()函数 181
    16.7.1 isupper()和islower()字符串
    方法 182
    16.7.2 用isupper()保留字符原大小写
    形式 183
    16.8 生成随机密钥 184
    16.9 调用main()函数 184
    16.10 小结 185
    16.11 习题 185
    第 17章 破解简单代换密码 186
    17.1 使用单词模式进行解密 186
    17.1.1 寻找单词模式 187
    17.1.2 寻找可能解密字母 187
    17.2 破解程序总览 188
    17.3 单词模式模块 189
    17.4 简单代换破解程序的源代码 190
    17.5 简单代换破解程序的运行示例 193
    17.6 创建模块和常量 193
    17.7 用正则表达式查找字符 194
    17.8 创建main()函数 194
    17.9 向用户显示破解结果 195
    17.10 创建密文映射 195
    17.10.1 创建空映射 196
    17.10.2 向映射添加字母 196
    17.10.3 取两个映射的交集 197
    17.10.4 字母映射辅助函数的工作
    原理 198
    17.10.5 识别映射中已确定的明文
    字母 201
    17.10.6 测试removeSolvedLetterFrom-
    Mapping()函数 203
    17.11 hackSimpleSub()函数 203
    17.11.1 replace()字符串方法 205
    17.11.2 解密消息 205
    17.11.3 在交互式运行环境中进行
    解密 206
    17.12 调用main()函数 207
    17.13 小结 208
    17.14 习题 208
    第 18章 编写维吉尼亚密码 209
    18.1 在维吉尼亚密码中使用多字母
    密钥 209
    18.1.1 密钥越长,维吉尼亚密码越
    安全 211
    18.1.2 选择一把抗字典攻击的密钥 212
    18.2 维吉尼亚密码实现程序的源
    代码 212
    18.3 运行维吉尼亚密码实现程序的
    样例 214
    18.4 引入模块、设置常量和创建
    main()函数 214
    18.5 使用List-Append-Join模式
    生成字符串 215
    18.6 消息的加密与解密 216
    18.7 调用main()函数 218
    18.8 小结 218
    18.9 习题 219
    第 19章 频率分析 220
    19.1 分析文本中的字母频率 220
    19.2 匹配字母频率 222
    19.2.1 计算简单代换密码的频率匹配
    分数 222
    19.2.2 计算置换密码的频率匹配分数 223
    19.2.3 对维吉尼亚密码进行频率分析 224
    19.3 计算字母频率的源码 224
    19.4 以“ETAOIN”顺序保存字母 226
    19.5 对消息中的字母进行计数 227
    19.6 获取元组的第 一个成员 228
    19.7 将消息中的字母按频率大小
    排序 228
    19.7.1 getLetterCount()完成字母
    计数 229
    19.7.2 创建字典存储频率和字母列表 229
    19.7.3 按ETAOIN顺序排序字母列表 230
    19.7.4 字典列表按频率大小排序 233
    19.7.5 创建列表存储排序后的字母 235
    19.8 计算消息的频率匹配分数 235
    19.9 小结 236
    19.10 习题 237
    第 20章 破解维吉尼亚密码 238
    20.1 运用字典式攻击暴力破解维吉尼亚密码 238
    20.2 维吉尼亚密码字典式破解程序的
    源代码 238
    20.3 维吉尼亚密码字典式破解程序的
    运行样例 239
    20.4 关于维吉尼亚密码破解程序 240
    20.5 运用Kasiski检测确定密钥
    长度 240
    20.5.1 找到重复序列 240
    20.5.2 求得间隔的因子 241
    20.5.3 提取字符串的每个第N位
    字母 242
    20.5.4 使用频率分析法逐个破解
    子密钥 243
    20.5.5 暴力破解可能密钥 245
    20.6 维吉尼亚密码破解程序的源
    代码 246
    20.7 维吉尼亚密码破解程序的运行
    样例 251
    20.8 引入模块、设置常量和创建
    main()函数 251
    20.9 寻找重复序列 252
    20.10 求得间隔数的因子 254
    20.10.1 通过set()函数去除重复元素 255
    20.10.2 移除重复因子并对列表进行
    排序 256
    20.10.3 找到出现次数*多的因子 256
    20.11 找到*可能的密钥长度 258
    20.11.1 extend()列表方法 258
    20.11.2 扩展repeatedSeqSpacings
    字典 259
    20.11.3 从factorByCount中获取因子 259
    20.12 找到由相同子密钥加密的
    字母 260
    20.13 尝试用可能的密钥长度进行
    解密 261
    20.13.1 print()的end关键字参数 263
    20.13.2 以沉默模式执行程序或打印
    信息 263
    20.13.3 确定子密钥的可能组合 264
    20.13.4 以正确的大小写形式打印解密
    后的文本 267
    20.14 返回破解后的消息 268
    20.14.1 找到可能密钥后跳出循环 268
    20.14.2 用其他所有可能密钥长度进行
    暴力破解 269
    20.15 调用main()函数 269
    20.16 改变破解程序中的常量 269
    20.17 小结 270
    20.18 习题 271
    第 21章 一次一密 272
    21.1 不可破解的一次一密 272
    21.1.1 密钥长度等于消息长度 272
    21.1.2 使密钥真正随机 274
    21.1.3 避免两次一密 274
    21.2 为什么两次一密是维吉尼亚
    密码 275
    21.3 小结 276
    21.4 习题 276
    第 22章 素数的查找与生成 277
    22.1 什么是素数 277
    22.2 素数模块的源代码 279
    22.3 素数模块的调用样例 281
    22.4 试除法的原理 281
    22.5 实现试除法检测 283
    22.6 埃拉托斯特尼筛法 283
    22.7 使用埃拉托斯特尼筛法生成
    素数 285
    22.8 Rabin-Miller素性检测算法 286
    22.9 寻找大素数 287
    22.10 生成大素数 288
    22.11 小结 289
    22.12 习题 289
    第 23章 为公钥密码生成密钥 290
    23.1 公钥密码体制 290
    23.2 认证的问题 291
    23.2.1 数字签名 292
    23.2.2 谨防MITM攻击 293
    23.3 生成公钥和私钥的步骤 293
    23.4 公钥生成程序的源代码 294
    23.5 公钥生成程序的示例运行 295
    23.6 创建main()函数 296
    23.7 通过generateKey()函数生成
    密钥 297
    23.7.1 计算e的值 297
    23.7.2 计算d的值 298
    23.7.3 返回公私钥对 298
    23.8 通过makeKeyFiles()函数创建
    密钥文件 299
    23.9 调用main()函数 300
    23.10 混合密码体制 301
    23.11 小结 301
    23.12 习题 301
    第 24章 编写公钥密码算法 302
    24.1 公钥密码算法的实现原理 302
    24.1.1 分组的创建 302
    24.1.2 字符串转换为分组 303
    24.1.3 公钥密码算法进行加解密的
    数学原理 305
    24.1.4 分组转换为字符串 306
    24.1.5 为什么不能破解公钥密码 307
    24.2 实现公钥密码算法的源代码 309
    24.3 公钥密码算法实现程序的运行
    样例 312
    24.4 程序的设置 313
    24.5 程序如何判断加解密 314
    24.6 通过getBlockFromText()函数
    将字符串转换为分组 315
    24.6.1 min()函数及max()函数 315
    24.6.2 将分组存储在blockInt中 316
    24.7 使用getTextFromBlocks()进行
    解密 317
    24.7.1 使用insert()列表方法 318

    24.7.2 将消息列表合并为一个字符串 318
    24.8 编写encryptMessage()函数 319
    24.9 编写decryptMessage()函数 319
    24.10 从密钥文件中读取公钥和
    私钥 320
    24.11 将加密的内容写入文件 321
    24.12 解密文件中的信息 323
    24.13 调用main()函数 324
    24.14 小结 324
    附录 调试Python代码 326
    作者介绍

    阿尔·斯维加特(Al Sweigart)是一位专业的软件开发人员,他专注于儿童和成人编程项目。他编写了《Python游戏编 程快速上手》《Python和Pygame游戏开发指南》《Python密码学编程》《Python编程快速上手——让繁琐工作自动 化》等图书,深受读者欢迎。
    关联推荐

    Python编程实现加密算法的初学者指南
    1
    • 商品详情
    • 内容简介

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购