龙空技术网

密码传奇一:凯撒的秘密武器

卡门漫谈历史 172

前言:

现时同学们对“凯撒密码算法c语言”大体比较关注,我们都需要分析一些“凯撒密码算法c语言”的相关资讯。那么小编也在网摘上汇集了一些对于“凯撒密码算法c语言””的相关内容,希望同学们能喜欢,小伙伴们快快来学习一下吧!

自人类诞生文字,用以传递信息,除了向所有人传达信息的文字(比如书籍),还有希望只向特定人传达信息的文字,于是产生了保密的需求。

最初保密内容的方法,都是把传递信息的载体隐藏起来,统称为隐匿法。

春秋战国的时候,中国人就会把信息写在丝绸上,包在蜡丸中,由信使吞下。(别问我收信人要怎么取出来)

而在古希腊和古波斯,则是把信使剃光头,写上信息,然后等头发长出来,信使再出发,找到收信人,剃光头发给对方看。

隐匿法使用方便(就是信使遭罪),所以长久的被使用,比如吞蜡丸的方法,咱们中国人一直使用到清朝。

但是隐匿法也存在明显缺陷:如果敌人仔细搜查信使身体,一板一眼的搜索身体每个角落,一旦被拦截,那么对内容的保护就前功尽弃。

加密法也很快诞生。加密法就是把信息转换成无意义的文字或符号,只有依据发信人和收信人事先约定的规则来转译,才能还原得到准确的信息。

如果说隐匿法是试图将内有信息的箱子,尽可能的藏起来夹带过关,那么加密法就是给箱子上了一把锁,唯独有钥匙的收信人才能打开。这样即使在传递过程中,遭到拦截也不怕信息会泄露。

传说中姜太公发明的阴符,是长短不一的竹片,用不同的长度代表不同的内容:

三寸代表失利亡士;四寸代表败军亡将;

五寸代表请粮益兵;六寸代表警众坚守;

七寸代表却敌报远;八寸代表降城得邑;

九寸代表破军杀将;一尺代表大胜克敌。

只有前线将领和后方指挥人员明白不同长度所代表的意义,这样即使信使被俘,敌人也无法知道每个竹片到底是什么意思。

而在古希腊,斯巴达人使用一种叫密码棒的装置,首先在密码棒上缠绕上皮革或羊皮纸,横向写下信息后再解开,这样文字就变成混乱的一长串字母。信使通常会把有信息的一面朝内,当做腰带使用。在送达之后,收信人再绕在相同直径的密码棒上,还原出可读文字。

密码棒

但是这两种方法也有局限:中国的阴符能传达的信息非常有限,斯巴达的密码棒只要敌人用不同粗细的棒子多试几次,很有可能就泄密了。

密码历史中第一位大人物登场了。

凯撒大帝

凯撒大帝所著的《高卢战记》,记录了他的秘密武器,一种更先进的加密法:把所有字母替代成其后某几位的字母,比如替换为后三位,这样a替换成D,b替换成E,c替换成F,以此类推。这就是鼎鼎大名的凯撒密码。

聪明的读者肯定一眼就看出来了,这种加密法只有25种模式,只要用穷举法,尝试每一种替换,多费点时间就能破解,凯撒大帝用来保密真的没问题吗?

相信我,这个方法在古罗马很好用,因为那会凯撒大帝的敌人基本是各种蛮族,而蛮族,一般是,不识字的。

这里介绍下密码的常用术语:待加密的信息称为明文(一般用小写字母表示),明文经过加密后称为密文(一般用大写字母表示),把明文加密成密文的方法称为加密算法。

凯撒密码是只有25种的加密算法,自然是不够安全,那人们紧接着就想到,用完全随机对应字母来加密,虽然英文字母只有26个,但足可以产生多达400000000000000000000种以上不同的加密算法。但是完全随机替换字母,发信方和收信方都需要一张记录字母是如何一一对应的纸,这样就还是存在被敌人截获或偷取的可能。那么,有没有像凯撒密码那样方便记忆,但又难以被猜测的加密算法吗?

答案就是秘钥。(也写作密钥)

所谓秘钥就是一个keyword(关键词),比如今日头条的全拼jin ri tou tiao,然后去掉空格和重复的字母,得到jinrtoua,从第一个字母开始一一对应:a对应J,b对应I,c对应N,d对应R,e对应T,f对应O,g对应U,h对应A,然后按照顺序依次对应剩下字母,得到密码字母集。

这样生成的密码字母集,虽然比不上完全随机替换的复杂(某几个字母可能没有被替换),但是足够简单,发信人和寄信人只需要记住一个单词——可以是人名、地名或自造的词——就可以产生一套难以被破解的加密算法。

至此,人类第一个被广泛和长久使用的加密法诞生了:替代加密法。

替代加密法有着两个最大的优点:使用简单,难以破解。

在往后的岁月里,无数更优秀的加密算法层出不穷,但这两个优点都被毫无保留的继承了。

替代加密法在上千年的时间里,广泛的被用于一切需要保密的地方,被人们认为是无法被破解的,但世界上真的有能抵挡一切的盾吗?

敬请期待《密码传奇二:被处决的女王》。

标签: #凯撒密码算法c语言