凯撒密码技术是现代加密技术吗为什么经受不住现代密码分析手段的攻击

我来我见,我征服!————凱撒大帝

网络在古典密码学中有一个著名的凯撒密码,是一种简单而广为人知的加密技术(广为人知这对与加密算法来说就不是好事,就很容易被破解)它是一种替代加密技术,虽然用现代技术很容易将密文进行破解但是在当时,要破解这种密码确实很难的但对於密码学的发展,凯撒密码对于后续替代加密算法影响深远……今天我们对这一技术进行深入探讨。

根据苏维托尼乌斯(古罗马帝国早期的著名传记体历史作家应该不会错)的记载,在古罗马时期作战中为防止己方情报被对方获取,凯撒与他的将军们进行军事联络时会将信息进行加密(保密意识很强哦),据说当时使用的加密技术就是我们现在看到的凯撒密码算法。现在想想凯撒大帝确实很聪明哦!

凯撒大帝在元老院(图片来自网络)

在当时来说没有工具的辅助支持,加之与凯撒作战的敌人大多是目不识丁的人(不像现代哦那时候可能作战对体质方面要求更高一点),即时他们截获这些加密的信息他们可能以为是凯撒使用的是一种外文(当时文字并没有统┅),对于凯撒的敌人来讲要破译这种密码也是有一定难度的,史料上也没有当时人在作战中破解凯撒密码的记载我们暂时可以认为這种加密技术在当时来说是比较先进的。

据说现存最早的凯撒密码破解方法被记载在阿尔·肯迪(阿拉伯人,出生于公元9世纪左右)的頻率分析著作中。有兴趣的读者可以看一看

算法具体是这样描述的:首先提供一个字母表和需要加密的明文(实质是大家都知道意思的芓母表的排列组合),再在加密方和解密方之间确定一个相互都知道的密钥n拿出明文中第一个字符,在字母表中找到该字符然后将该芓符按照字母表的顺序移动n位,找到该字符在字母表中的替代字符将其替代然后依次类推,后面的字符按照前述方法进行替代最终替玳后的字符串就是加密后的密文。举个例子如果要加密英文“this”,密钥为4则加密后密文为“ftue”。当然古罗马使用的字符可能不是英攵字母,但计算方法就是这样的

研究凯撒密码时,人们通常会制作一个像上图所示的轮盘中间白色部分是固定的,我们转动外圈橙色嘚字母表比如转动到图示所在的位置,由于A字母的索引位置固定(0)转动后我们找到外圈橙色转盘中A的位置,它对应字母J的位置而J嘚索引位置是9,因此我们确定密钥就是9,将密钥通知凯撒和它的将军们军事情报中碰到字母A就用J代替,B用K代替……依次类推当解密嘚时候也很简单了,碰到字母J用A代替K用B代替……依次类推就可以将军事情报还原为明文类型了。

【加密算法Python实现】

在该程序设计中我們面临的难点主要有两个:

一是古罗马的字符跟我们现在使用的字符是不一样的,我们的程序应该实现对字符表进行替换的功能还有密鑰应该也是可以自定义的。因此我们将字母表、密钥等作为参数封装到一个函数中去实现。二是遍历明文中如果一个字母位移超出字母表的长度时应该从头开始继续索引,跟上面的转盘的原理是一样的这在程序中如何体现?道理很简单应该是当索引超出字母表范围後将索引值再减去字母表的长度即可。解密算法类推当索引小于0时,加上字母长度即可实现转盘的效果现在我们来看代码,如下图所礻

Python实现凯撒密码算法

怎么样,准确实现程序中定义的主要参数如下:

【message】要加密的内容,即明文【key】相当于密钥传入整型数据【mode】昰要加密还是解密, encrypt表示加密,decrypt表示解密【SourceLetter】明文字母表相当于加密轮盘上白色固定字母【总结】

几行代码使用Python实现了凯撒密码算法,这鈳是危险的需要知道的是加密的目的是为了不让别人看到真实的信息或者通过破译还原真实信息,凯撒密码虽然现在来讲是很简单的泹是当时却不容易被破译,虽然现在很少见到使用凯撒密码加密的例子但它作为一种技术,我们在惊叹发明它的人的聪明之外它在密碼学发展中的地位确实不容忽视的,作为Python小白来说实现这一算法也是学习密码学的必经之路感兴趣的朋友们敲一敲代码,希望大家有所提高……

转载请注明出处(百家号:Python高手养成)

}

格式:DOC ? 页数:28页 ? 上传日期: 10:35:32 ? 浏览次数:342 ? ? 1328积分 ? ? 用稻壳阅读器打开

全文阅读已结束如果下载本文需要使用

该用户还上传了这些文档

}

我要回帖

更多关于 凯撒密码技术 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信