恺撒密码是一种代换密码。据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,他的基本思想是:通过把字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推X将变成A,Y变成B,Z变成C。由此可见,位数就是凯撒密码加密和解密的密钥。
中文名:凯撒密码
别名:凯撒加密
英文名:Caesar's code
性质:加密技术
类别:密码学
载体:字母
概念恺撒密码凯撒密码最早由古罗马军事统帅盖乌斯·尤利乌斯·凯撒在军队中用来传递加密信息,故称凯撒密码。这是一种位移加密方式,只对26个字母进行位移替换加密,规则简单,容易破解。[1]
在密码学中,凯撒密码(或称恺撒加密、恺撒变换、变换加密)是一种最简单且最广为人知的加密技术。它是一种替换加密的技术。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。恺撒密码通常被作为其他更复杂的加密方法中的一个步骤,例如维吉尼亚密码。恺撒密码还在现代的ROT13系统中被应用。但是和所有的利用字母表进行替换的加密技术一样,恺撒密码非常容易被破解,而且在实际应用中也无法保证通信安全。
凯撒密码II在人类历史上,对信息保护的需求与对信息本身的需求一样久远。第一个用于加密和解密文本的编码方式是凯撒密码。由于原始的凯撒密码较简单,较易被破解。随着考古的进展,人们发现了升级版的凯撒密码II。
凯撒密码II通过查询动态密码表,把凯撒单词加密成一些密文数字。
如果请你使用现有动态密码表,加密一些单词。你要处理m个操作,操作分成两种:
A string integer:增加一条凯撒单词string到凯撒密文数字integer的映射规则,如果先前已经有关于这个string的规则,那么用该规则替换原规则。
Q string:查询单词string所对应的最新密文数字。
第一行一个整数m(1≤m≤1,000,000),表示有m个操作。
单词仅有长度不超过8位的小写字母组成,单词总数不超过100,000个。
密文数字的范围是[0..1,000,000,000]。
凯撒密表古罗马随笔作家修托尼厄斯在他的作品中披露,凯撒常用一种“密表”给他的朋友写信。这里所说的密表,在密码学上称为“凯撒密表”。用现代的眼光看,凯撒密表是一种相当简单的加密变换,就是把明文中的每一个字母用它在字母表上位置后面的第三个字母代替。古罗马文字就是现在所称的拉丁文,其字母就是我们从英语中熟知的那26个拉丁字母。因此,凯撒密表就是用D代a,用E代b,……,用z代w,(注意!)用A代x,用B代y,C代z。这些代替规则也可用一张表格来表示(所以叫“密表”)。
那么,在公元前54年,凯撒就是用这种密码给西塞罗写信的吗?有趣的是,密码界对这—点却持否定态度,因为密码学历史上还记载着凯撒使用的另一种加密方法:把明文的拉丁字母逐个代之以相应的希腊字母,这种方法看来更贴近凯撒在《高卢战记》中的记叙。
显然,哪一个拉丁字母应该代之以哪—个希腊字母,事先都有约定,凯撒知道,西塞罗也知道,不然的话,西塞罗收到密信后,也会不知所云。当阿里巴巴站在那四十一名大盗的山洞大门口,准备打开大门时,他必须知道一个咒语:“芝麻开门”。当我们站在密码学的大门,准备迈入时,必须要知道的则是—些基本概念。为此,让我们先把密码通信的几个要素总结如下。
在军事通信上,必须考虑要传送的秘密信息在传送的途中被除发信者和收信者以外的第三者(特别是敌人)截获的可能性使载送信息的载体(如文本、无线电被等)即使在被截获的情况下也不会让截获者得知其中信息内容的通信方法或技术,称为保密通信。密码通信就是一种保密通信,它是把表达信息的意思明确的文字符号,用通信双方事先所约定的变换规则,变换为另一串莫名其妙的符号,以此作为通信的文本发送给收信者,当这样的文本传送到收信者手中时,收信者—时也不能识别其中所代表的意思,这时就要根据事先约定的变换规则,把它恢复成原来的意思明确的文字,然后阅读。
这样,如果这个文本在通信途中被第三者截获,由于第三者—般不知道那变换规则,因此他就不能得知在这一串符号背后所隐藏的信息。当然,为了战争的目的,他会千方百计地努力弄到这个变换规则。一种努力就是对已经截获的密文进行分析,有时结合从其他途径获得的有关信息,试图找出这个变换规则。
在密码学中,我们要传送的以通用语言明确表达的文字内容称为明文,由明文经变换而形成的用于密码通信的那一串符号称为密文,把明文按约定的变换规则变换为密文的过程称为加密,收信者用约定的变换规则把密文恢复为明文的过程称为解密。敌方主要围绕所截获密文进行分析以找出密码变换规则的过程,称为破译。
明密对照表明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:TUVWXYZABCDEFGHIJKLMNOPQRS
注:广义上的凯撒是位移的。
凯撒是没有密匙的,即使没有密匙也能将它破解出来,因为凯撒移位密码只有25种密匙,最多就是将这25种可能性挨个检测一下可以了,这就是我们所说的暴力破解法。也可在用软件破解,不过我提倡用人工的。
推理的方法1,对于有空格的凯撒移位,单字母A和I是突破口,这无异相当于告诉了移动的位数,这样很容易就被破解了。所以,如果我们要用凯撒密码的话一定要去掉空格加大破解难度。
2,差数法。
有空格时,而又没有单字母A和I时,这种方法很,如果我们令A=1,B=2,C=3......就是每个字母是字母的第几个,经过移位后的单词,每两相邻的字母之间的差值不变的。如the的差值为12,3(在这里我是用后面的一个字母减前面的一个字母,当然你也可以用后面的一个字母减前面的一个字母),移动后两个相邻字母的差值也将会是12,3。
对于没有空格的恺撒破解起来就比有空格的难一些,对于没有空格的我们还要对密文进行分析,找出重复出现的字母串,然后对字母串进行猜测,例,如果有3个字母串,出现的次数比较高,我们就可以假设它为the因为3个字母串出现次最多的就是the,当然这不是一成不变的,这时应该就被破解了。
我们看到一个密码怎样判断是凯撒密码呢?这又要扯到频率分析去(在这里不介绍,在后面在说),没有经过移位的明文和移过的密文是有区别的,这样就可以区分凯撒密码和栅栏密码了(栅栏密码参照下一章)。
没有移位的栅栏密码元音比较多,这是语言本身的性质绝定,像英语和汉语拼音的元音出现频率就比较高。
原理密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺撒密码”,它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。因据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。这是一种简单的加密方法,这种密码的密度是很低的,只需简单地统计字频就可以破译。现今又叫“移位密码”,只不过移动的位数不一定是3位而已。
密码术可以大致分为两种,即移位和替换,当然也有两者结合的更复杂的方法。在移位中字母不变,位置改变;替换中字母改变,位置不变。将替换密码用于军事用途的第一个文件记载是恺撒著的《高卢记》。恺撒描述了他如何将密信送到正处在被围困、濒临投降的西塞罗。其中罗马字母被替换成希腊字母使得敌人根本无法看懂信息。
苏托尼厄斯在公元二世纪写的《恺撒传》中对恺撒用过的其中一种替换密码作了详细的描写。恺撒只是简单地把信息中的每一个字母用字母表中的该字母后的第三个字母代替。这种密码替换通常叫做恺撒移位密码,或简单的说,恺撒密码。尽管苏托尼厄斯仅提到三个位置的恺撒移位,但显然从1到25个位置的移位我们都可以使用,因此,为了使密码有更高的安全性,单字母替换密码就出现了。
如何破解包括恺撒密码在内的单字母替换密码?
方法:字母频度分析
尽管我们不知道是谁发现了字母频度的差异可以用于破解密码。但是9世纪的科学家阿尔·金迪在《关于破译加密信息的手稿》对该技术做了最早的描述。
“如果我们知道一条加密信息所使用的语言,那么破译这条加密信息的方法就是找出同样的语言写的一篇其他文章,大约一页纸长,然后我们计算其中每个字母的出现频率。我们将频率最高的字母标为1号,频率排第2的标为2号,第三标为3号,依次类推,直到数完样品文章中所有字母。然后我们观察需要破译的密文,同样分类出所有的字母,找出频率最高的字母,并全部用样本文章中最高频率的字母替换。第二高频的字母用样本中2号代替,第三则用3号替换,直到密文中所有字母均已被样本中的字母替换。”
以英文为例,首先我们以一篇或几篇一定长度的普通文章,建立字母表中每个字母的频度表。
在分析密文中的字母频率,将其对照即可破解。
虽然设密者后来针对频率分析技术对以前的设密方法做了些改进,比如说引进空符号等,目的是为了打破正常的字母出现频率。但是小的改进已经无法掩盖单字母替换法的巨大缺陷了。到16世纪,最好的密码破译师已经能够破译当时大多数的加密信息。
局限性:
短文可能严重偏离标准频率,假如文章少于100个字母,那么对它的解密就会比较困难。而且不是所有文章都适用标准频度:
1969年,法国作家乔治斯·佩雷克写了一部200页的小说《逃亡》,其中没有一个含有字母e的单词。更令人称奇的是英国小说家和评论家吉尔伯特·阿代尔成功地将《逃亡》翻译成英文,而且其中也没有一个字母e。阿代尔将这部译著命名为《真空》。如果这本书用单密码表进行加密,那么频度分析破解它会受到很大的困难。
一套新的密码系统由法国外交家维热纳尔(Blaise de Vigenère)于16世纪末确立。其密码不再用一个密码表来加密,而是使用了26个不同的密码表。这种密码表最大的优点在于能够克制频度分析,从而提供更好的安全保障。
历史溯源恺撒曾经使用这种密码与其将军们联系根据苏维托尼乌斯的记载,恺撒曾用此方法对重要的军事信息进行加密:公元前51年初,深冬。高卢,毕布拉克德(现法国境内伯夫雷山),凯撒的营帐。深夜,罗马共和国高卢行省长它儒略.凯撒,正在一张羊皮上写着什么。他的身影被跳动的灯火映在帐篷上,高大而摇曳。他的脸略嫌狭长,但棱角分明,专注的神色中透着与生俱来的自负。他在写他的“随记”,也就是后来流传于世的《高卢战记》。戎马生涯的凯撒本没有余暇来写什么随记,但是过去的几年中,与他在高卢的显赫战绩相比,政治上的事态发展可不那么如意。
罗马执政宫克拉苏斯在同帕尔提亚人(在今土库曼斯坦南部和伊朗东北部)的作战中被俘。熔化了的台液灌进了他的喉咙……这个当年残酷镇压斯巴达克斯起义的刽子手,如今向他嗜如生命的黄金铸在了一起,这对凯撒来说是一件好事——少了一个政敌,但更是一件坏事——罗马“三巨头”之间的平衡被打破了,活着的两巨头,他和庞培,不得不面临决斗。凯撒从来没有看得起过克拉苏斯。
这个只会献媚的小人死不足惜,但庞培绝不能小看,不然的话凯撒当年也不会把自己的女儿尤丽姬嫁给庞培。要知道,庞培比凯撒还要大8岁。尤丽娅已经去世,他们之间除了你死我活己无任何瓜葛。庞培以罗马唯一执政官的地位优势,正在元老院里向他发动强大的政治攻势……他必须宣传自己,他必须向元老院陈述自己的功绩,但同时又必须表现出一种谦逊、客观的态度,不能带有任何自吹自擂的痕迹。为此,他在这部随记中,处处用第三人称称呼自己,通篇都用异常平静、简洁的笔调叙说战事的经过。
这时他正写到卷五,说的是公元前54年,他的爱将西塞罗突然遭到维尔纳人的围攻,情况紧急,“于是,他以极大的酬报说服了一个高卢骑兵,送一封信去给西塞罗。送去的信是用希腊文写的,免得它被敌人截住后得知我军的计划……”写到这时,他停了一下,似在考虑更好的措词。一丝狡猾的微笑从脸上掠过,他继续写了下去……时间无情地飞驰,转眼就过了近2000年,凯撒的《高卢战记》以其翔实的叙事、清纯的文风,成为研究罗马历史、拉丁文学和军事史不可或缺的学术资料。
1979年,中国商务印书馆将《高卢战记》译成中文,作为“汉译世界学术名著丛书”中的一种出版,译者任炳湘先生打开这本中文译本,翻到第124页,我们看到了上面引述的那桩派人送信给西塞罗的事。然而,治学严谨的译者在这里发现了问题,他注道:“言下之意,似乎高卢人个懂希腊语,即令书信被截去,也不会泄露自己的计划。但在本书卷一25节中曾说到在厄尔维几人营中发现用希腊文写的统计数字,又说高卢人无论公私文件都用希腊文书写,似乎有矛盾。”对此,译者的推测是:“也许上面两节指的是高卢人用希腊字母书写自己的语言,这一节所说的是真正的希腊文。”
译者的质疑可说是切中要害,然而译者的推测却仍让人疑云难消。敌营中就没有一人认识真正的希腊文?他们就不能去找一个希腊人来识这封信(如果他们截住了这封信的话)?足智多谋的凯撒会不考虑这些明摆着的可能而铤而走险?是不是可以有另外的解释?确实有另外一种解释:如果记让一位密码学家来进行推测,他会毫不犹豫地认为——凯撒送去的这封信是用密码写的!因为任何一本讲述密码学历史的著作,都会提到凯撒对军事密码学的贡献。凯撒在其军事行动中使用了密码,这在密码学界已不是密码。
科学已经无法弄清恺撒密码在当时有多大的效果,但是有理由相信它是安全的。因为恺撒大部分敌人都是目不识丁的,而其余的则可能将这些消息当作是某个未知的外语。即使有某个敌人获取了恺撒的加密信息,根据现有的记载,当时也没有任何技术能够解决这一最基本、最简单的替换密码。现存最早的破解方法记载在公元9世纪阿拉伯的阿尔·肯迪的有关发现频率分析的著作中。
凯撒系统此系统因罗马时代的发明人Julius Caesar(盖乌斯·尤利乌斯·恺撒)得名。传说被恺撒大帝使用过。
恺撒系统的密码是自己选的一个单词。
例如,选用mountain,写出以下的字母序列:mountaibcdefghjklpqrsvwxyz。
看出来了吗?就是在正常字母序列中抽掉你的密码mountain。由于mountain中有两个n,把第二个去掉。
然后,把正常字母序列写在这个序列下面:
在加密的时候,用上面那个序列里的字母代替原文中的字母写成密文。例如,m代替a,o代替b。解密时方向相反。所以,加密heishere的结果是:btcqbkpt。
如果你的文本中有数字,那么不妨写一个36字符的序列,并把数字加在你的密码中。
评价这种方法比简单移位系统安全,可以在你的日记中使用。但是,如果加密的文字有(大约)400字符以上,那么攻击者手工花费1天时间即可破解,因为英文和其它语言中每个字母都有一定的使用频率,破解者根据这些频率就可以破译。
参考资料1.凯撒密码加密解密·千千秀字