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

1.9 不用纸质工具做加密

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

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

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

现在,如果要加密,我们找到希望加密的字母下面的数字,然后把密钥数字加上去。这个和就是加密的字母下面的数字。如,我们使用密钥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?”里的每个字母。每列演示了把左边的明文字母变成右边的密文字母的步骤。

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

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

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

时间: 2024-07-30 19:20:07

《Python密码学编程》——1.9 不用纸质工具做加密的相关文章

《Python密码学编程》——导读

前 言 有很多书教初学者如何使用加密法写秘密消息,有一些书教初学者如何破译加密法.据我所知,还没有书教初学者如何编写程序来破译加密法.这本书填补了这个空缺. 本书适合不懂加密.破译或密码学的初学者.本书的加密法(除了最后一章的RSA加密法)都有数百年历史了,现代计算机的计算能力可以破译使用它们加密的信息,现代组织或个人已经不再使用这些加密法了.有鉴于此,你不会因为本书里的内容而惹麻烦. 本书适合从来没有编过程序的初学者.本书使用Python编程语言讲解基本编程概念.Python非常适合初学者学习

《Python密码学编程》——第1章 制作纸质加密工具 1.1 密码学是什么

第1章 制作纸质加密工具 本章主要内容: 密码学是什么: 代码和加密法: 凯撒加密法: 加密轮盘: St. Cyr滑条: 用纸笔做加密: "双重强度"加密. 我忍不住偷听,可能因为我在窃听. --佚名 1.1 密码学是什么 看看以下两段文字: 左边的文字是秘密消息.这段消息已被加密,或者说被变成了秘密代码.任何不知道如何解密(也就是把它变回普通英语消息)的人都无法阅读.本书将会教你如何加密和解密消息. 右边的消息只是随机乱码,没有包含任何有意义的内容.加密你写下来的消息是对其他人保密的

《Python密码学编程》——1.3 制作纸质加密轮盘

1.3 制作纸质加密轮盘 在学习通过计算机编程进行加密和解密之前,我们先来了解一下如何使用简单的纸质工具手工完成这项任务.把可理解的英语文字(明文)变成隐藏秘密代码的乱码文字(密文)是很容易的.加密法(cipher)是一组转换明文和密文的规则.这些规则通常使用一个密钥.我们会在本书里学到多种不同的加密法. 我们来学一下凯撒加密法.这种加密法曾在两千年前被凯撒大帝用过.好消息是,它学起来很简单很容易.坏消息是,正因为它简单,密码破译者也很容易破译它.但我们可以把它看做一个简单的练习.Wikiped

《Python密码学编程》——1.7 另一个加密法工具:St. Cyr滑条

1.7 另一个加密法工具:St. Cyr滑条 还有一个纸质工具可以用来做加密和解密,这个纸质工具叫做St. Cyr滑条.它很像密钥索引轮盘,但它是直的. 复印本页的St. Cyr滑条图片(或者从http://invpy.com/stcyrslide打印),剪下三条纸带,如图1-11所示. 连接两条字母表纸带,把黑框A粘在另一条纸带上的白框Z旁边.割开主滑框两边的裂缝,使连接起来的纸条可以穿过它.最后看起来应该是如图1-12所示. 当黑框A在字母H(数字7)下面时,如果要加密,就在长纸带上找出明文

《Python密码学编程》——2.11 编程和密码学

2.11 编程和密码学 编程和密码学是两个独立的技能,但一起学是很有用的,因为计算机做加密比人更快.比如说,以下是用简单替换密码的方式加密莎士比亚的<罗密欧与朱丽叶>之后的全部文本: 如果你尝试手工加密,每天工作12小时,周末休息,需要大约三周时间才能完成加密.或许你还会犯些错误.然后需要另外的三周时间才能解密这段加密的文本. 你的计算机只需不到两秒就能完全加密或解密整部戏剧. 但你需要知道如何进行计算机编程才能加密.这就是本书的目的了.如果你会计算机编程,你也可以破译别人加密并试图保密的密文

《Python密码学编程》——2.8 使用在线比较工具检查输入的代码

2.8 使用在线比较工具检查输入的代码 虽然通过输入这些程序的源代码来学习Python很有帮助,但你可能不小心输入错误导致程序崩溃.输入错误的位置可能无法一眼看出. 你可以复制粘贴你输入的源代码的文本到本书网站的在线比较工具.这个比较工具会显示本书代码和你输入的代码之间的差别.这是找出你的程序的输入错误的一个简单方法. 这个在线比较工具在http://invpy.com/hackingdiff .有一段关于如何使用这个比较工具的视频也可以在本书的网站http://invpy.com/hackin

《Python密码学编程》——2.10 更多信息链接

2.10 更多信息链接 关于编程和密码学还有很多可以学习的,但你不需要现在就把所有的都学了.有时候,你可能了解这些额外的细节和解释,但如果我把它们都放到这本书里,就会增加很大篇幅.出版这么大的一本书会把大量容易着火的纸聚在一起,使之会变成一个火灾隐患.我在本书里包含了"更多信息"链接,你可以通过它们访问本书的网站.你不需要阅读这些额外的信息来理解本书的任何东西,但这些信息可以帮助你学习.这些链接以http://invpy.com 开头(这是"Invent with Pytho

《Python密码学编程》——第2章 Pygame基础知识 2.1 下载和安装Python

第2章 Pygame基础知识 本章主要内容: 下载和安装Python: 下载Pyperclip模块: 如何启动IDLE: 本书采用的格式: 复制粘贴文本. 开放社会的隐私需要密码学.如果我说了什么,我希望听到的人都是我想让他们听到的.如果我讲话的内容全世界都能知道,那我就没隐私了. --Eric Hughes,<A Cypherpunk's Manifesto>,1993(http://invpy.com/cypherpunk) 本章内容很像Invent Your Own Computer G

《Python密码学编程》——2.4 特色程序

2.4 特色程序 本书不同于其他编程书籍,它专注于完整程序的源代码.这本书不是教你编程概念,让你自己搞清楚如何创建你自己的程序,而是向你展示完整程序,并解释它们是如何工作的. 在阅读本书时,你可以自己把本书的代码输入IDLE.你也可以从本书的网站下载源代码文件.打开http://invpy.com/hackingsource ,按照指示下载源代码文件. 一般而言,你应该从头到尾阅读.这些编程概念都是建立在前面章节基础之上的.但是,Python是一门可读性很强的语言,读了开头几章之后,你就可以搞清