《Python密码学编程》——1.9 不用纸质工具做加密-阿里云开发者社区

开发者社区> 异步社区> 正文

《Python密码学编程》——1.9 不用纸质工具做加密

简介:
+关注继续查看

本节书摘来自异步社区《Python密码学编程》一书中的第1章,第1.9节,作者 [美] Al Sweigart(斯维加特),李永伦 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.9 不用纸质工具做加密

在使用凯撒加密法做加密和解密时,加密轮盘和St. Cyr滑条都是很好的工具。但我们只用铅笔和纸也可以实现凯撒加密法。

把字母表的字母从A到Z写下来,在每个字母下面写下数字0到25。在A下面写0,B下面写1,如此类推,直到在Z下面写25(字母表里有26个字母,但我们的数字最多只到25,因为我们从0而不是1开始的)。最终看起来像这样:


16eac59dbd65cc1e8ee82827f6fb952a1267b515

有了上面这个从字母到数字的代码,我们就可以用数字来表示字母了。这是一个非常强大的概念,因为数学使用数字。现在我们可以在字母上做运算了。

现在,如果要加密,我们找到希望加密的字母下面的数字,然后把密钥数字加上去。这个和就是加密的字母下面的数字。如,我们使用密钥13加密“Hello. How are you?”。首先,我们找到H下面的数字,是7。接着,我们把密钥加上这个数字,7 + 13 = 20。数字20在字母U下面,这意味着字母H加密成字母U。如果要加密字母E,我们把E下面的4加上13,得到17。17上面的字母是R,因此E加密成R。如此类推。

直到我们遇上字母O时这个方法才会出问题。O下面的数字是14,当把14加上13时,我们得到27。但我们的数字列表最多只到25。如果字母的数字和密钥之和超过26,我们应该减去26,27 – 26得到1。数字1上面的字母是B。于是,当使用密钥13时,字母O加密成字母B。一个接一个地,我们可以把“HELLO. HOW ARE YOU?”里的字母加密成“URYYB. UBJ NER LBH?”。

因此,加密一个字母的步骤是:

1.从1到25选一个密钥。保管好这个密钥!

2.找出明文字母的数字。

3.把密钥加到这个明文字母的数字。

4.如果这个数字大于26,则减去26。

5.找出你计算的数字的字母。这就是密文字母。

6.对明文消息里的每个字母重复步骤2~5。

表1-1演示了如何使用密钥13加密“HELLO. HOW ARE YOU?”里的每个字母。每列演示了把左边的明文字母变成右边的密文字母的步骤。


68ab7576e0c78816b2789c3785fb6eab20ec5be9


0287ad8954512edb0c36da38eaccbe3948864fe0

如果要解密,你需要理解负数是什么。如果你不知道如何加和减负数,可以参考教程http://invpy.com/neg

如果要解密,减去这个密钥,而不是加上它。对于密文字母B,这个数字是1。1减去13得到−12。就像加密的“减去26”规则,当解密并且结果小于0时,我们有一条“加上26”的规则。−12 + 26是14,因此,如表1-2所示,密文字母B解密回字母O。


2f629648988d201c2cc3f7af7a221249ae357849


01332e535fd8f976398432b438192ef04b4cd4b8

如你所见,使用凯撒加密法加密是并不真的需要加密轮盘。如果你记住数字和字母,你甚至不必写下字母表以及它们下面的数字。你只需心算就可以写出秘密消息了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
爽!MaxCompute老铁们再也不用点点点了!
MaxCompute实现预付费项目自动续费。
2488 0
ev4加密视频破解 ev4转换mp4转换工具 【无须授权密码】
ev4加密视频破解 ev4转换mp4转换工具 【无须授权密码】
749 0
基于正则的INI读写工具类,支持加密解密
原文:基于正则的INI读写工具类,支持加密解密 看到这个标题,有人会问,现在都用xml做配置文件了,谁还用INI文件啊!下面来简单对比一下xml和ini:   1、XML功能强大表达能力强,同时扩展性好。
736 0
图片base64编码利器:在线 Data URI 生成工具 – Duri.me
  这篇文章介绍一款在线的图片 base64 编码利器 — Duri.me。data URI 图片是 base64 编码的图片文件,可以嵌入到 HTML 或者 CSS 文件中,能够减少 HTTP 请求,提高网页加载速速。
798 0
linux随机密码生成工具mkpasswd安装与使用教程
mkpasswd命令生成随机复杂密码,前提安装expect,然后执行mkpasswd命令即可生成随机的密码。 一、基本的命令安装 安装expect:       -l #      (密码的长度定义, 默认是 9)     -d #      (数字个数, 默认是 2)     -c #      (小写字符, 默认是 3)     -C #      (大写字符, 默认是 2)     -s #      (特殊字符, 默认是  1)     -v        (详细。
1206 0
《多核与GPU编程:工具、方法及实践》----1.5 并行程序性能的预测与测量
构建并行程序要比串行程序更具挑战性。并行程序程序员需要解决诸如共享资源访问、负载均衡(即,将计算负载分配到所有计算资源上来最小化执行时间)以及程序终止(即,以协调方式暂停程序)等相关问题。
1288 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载