古典密码之凯撒密码
凯撒密码
之前介绍了很多现代密码学相关的知识,俗话说得好,要站在巨人的肩膀上, 因此呢,接下来聊一聊古典密码的有关知识(才不是因为我现在没素材了, 手动狗头),古典密码相比于现代密码而言,更多的是一些trick或者说文字游戏,不过其中所蕴含的思想在现代密码当中也广泛出现,本文主要给大家介绍一下凯撒密码,这个古老但是又被众人都知晓的一个古典密码。
历史
盖乌斯·尤利乌斯·恺撒(Gaius Julius Caesar,公元前100年7月13日—公元前44年3月15日) ,史称恺撒大帝,又译盖厄斯·儒略·凯撒、加伊乌斯·朱利叶斯·凯撒等,罗马共和国(今地中海沿岸等地区)末期杰出的军事统帅、政治家,并且以其优越的才能成为了罗马帝国的奠基者。
恺撒出身贵族,历任财务官、祭司长、大法官、执政官、监察官、独裁官等职。
公元前60年与庞培、克拉苏秘密结成前三头同盟,随后出任高卢总督,在8年的时间里征服了高卢全境(今法国一带),还袭击了日耳曼和不列颠。公元前49年,他率军占领罗马,打败庞培,集大权于一身,实行独裁统治。制定了《儒略历》。
据说,凯撒大帝对于"凯撒密码"特别喜欢,在他的日常通信过程当中,也都采用了这种加密方法,因此,凯撒在战争当中占据了优势地位,虽然说,在现代来看,这个密码确实比较low, 但是在当时,凯撒的对手们,也是无法获取通信内容的。
算法概述
凯撒密码的过程非常简单,这里不会有现代密码当中辣么多数学知识,应该是比较通俗易懂的,具体原理是: 将每个英文字母用其随后的三个字母来代替,也就是A->D, B->E, ..., x->A, Y->B, Z->C。因此的明文的LittleQ
, 可以改写为OlwwohT
, 如下图所示:
凯撒密码
这看起来似乎是比较简单,本质上,这是对字母的一个替换操作,如果说在英文字母表当中可以做任意移位,那么就会有26!
种情况,利用乘法原理比较容易计算,在这里就不详细展开了。
如果说,采用数学公式来表示凯撒密码(n=3
),那么将会是如下的一个表示:
- 加密算法:
- 解密算法:
其中n是密钥,当然这里的密钥空间比较小,只有25个, 特别的,如果n取13的话,这个密码也是有名字的,被称之为ROT13
, 对于n=13,有个特殊的性质: , 也就是加密和解密实际是一个函数,要是有读者大佬不相信,可以自己试试, 我在下面贴一个ROT13
的替换表蛤。
- 「输入」: ABCDEFGHIJKLMNOPQRSTUVWXYZ
- 「输出」: NOPQRSTUVWXYZABCDEFGHIJKLM
思考
对于凯撒密码,这个原理看起来非常简单,只是一个对于字母的替换操作,但是替换操作在现代密码学当中也比较常见。
回忆一下,我们之前讲过的DES加密,开始有一个置换的操作,这里是对比特进行的一个替换,本质上也是一个替换操作,和对于字母的替换操作有着异曲同工之妙(如果忘记了DES结构的读者, 可以翻翻我之前写的文章, 或者自行查阅一下相关资料, 这里就不再展开讲了)。
突然想到一句诗词, 众里寻他千百度, 蓦然回首那人却在灯火阑珊处
, 看了这么多现代密码学的知识, 有些思想古人其实已经再用了, 只是没有形成单独的体系, 所以说, 了解一些密码学发展史, 有可能会对密码学当中的某些操作有新的认识。