恺撒移位密码 得到如下情况
前言
密码学的基本目的是使得两个在不安全的信道上进行安全的通信,在计算机网络中,现假设有两个人Alice和Bob,Alice想发送消息给Bob,告诉他明天凌晨2点毒贩将在4号码头进行交易,请Bob配合缉毒。这里Alice有一个麻烦就是他怕在信息传输中可能会被敌人Oscar监听,甚至篡改消息内容,导致整个计划失败,Bob也对Alice发过来的消息有疑虑,不知道消息是否为Alice本人所发,消息内容是否真实等等。
这里密码学的重要性就体现出来了,假设Alice事先和Bob商量好一个密钥(key),Alice通过密钥将明文(plaintext)加密成密文,在网络中传输,Bob收到Alice传过来的密文(ciphertext),用事先商量好的密钥进行解密,得到明文,而敌人即使监听到Alice发送的消息,也是加密过的密文,由于不知道密钥,所以无法知道真实的明文,整个过程如下。
image.png移位密码(Shift Cipher)、恺撒密码(Caesar Cipher)
移位密码是古典密码学中最早,最简单的一种加、解密码方法,最早可追溯至古罗马时代,尤利乌斯:恺撒曾经使用过此密码。
移位密码是通过将明文中所使用的字母按照一定的字数进行“平移”来加密,为了简化内容,在这里我们只使用英文字母作为示例,我们用小写字母(a,b,c,d…)来表示明文,用大写字母(A,B,C,D…)来表示密文。
最早期时,一般将字母平移3位,也就是a->D,b->E,c->F,
这种最早时平移3位是叫恺撒密码(Caesar Cipher),后来经过推广,平移位数也不一定是3位,可以是其它任何整数位,这种又叫移位密码(Shift Cipher),可以知道,恺撒密码是移位密码的一个特例(key=3时),下面是恺撒密码平移的工作方式
image.png
移位密码的加密
使用移位密码可以用来加密普通的英文句子,但是我们要建立英文字母和模26剩余之间一一对应关系,如A->0,B->1,…Z->25。其列表如下:
image.png
现假设我们有明文P=china,密钥K=3, 现要将其加密,根据上表,将字符P中的每个字母平移3位,得到如下情况:
至此,明文china就被转换成了密文FKLQD,
具体用程序算法可归纳如下:
具体代码可参考这里
移位密码的解密
移位密码的解密也非常简单,只要使用加密时用的密钥进行反向平移操作,刚来的例子只要将密文反向平移3位就行,可得到如下:
具体程序的算法其实就是加密的反向操作,如下:
具体代码可参考这里:
移位密码的暴力破解
通过上面的例子可以知道,我们只要拿到的密钥K,就可以密文解密,那么有没有不用密钥就可以解密的呢,在移位密码中,密钥就是字母平移的位数,因为因为字母表里只有26个字母(0-25),所以加密的密钥一共就是0-25之间的26个数字,我们可以把26个数字全部当作密钥试一次,解密出来其中有一个明文肯定是对的。
像这种将所有可能的密钥全部尝试一遍的,我们叫暴力破解(brute-force attack),这种方法本质是在所有的密钥中找出正确的那一个,因此又称为穷举搜索(exhaustive search)。
可以将上面的例子通过暴力破解试一下,密钥从0开始,一直试到25,得到如下效果:
可以知道,其实在试到第3次的时候,明文就被试出来了
代码可以参(jk是什么意思是什么?JK是“じょしこうこうせい ”(女子高校生)罗马音 jyoshi koukousei 的简写(取其中“J”和“K”),通常指日本女高中生;JK也是ACGN次文化中的萌属性之一。)考这里
脚本示例
我们用脚本试一下上面所说的各种方法,脚本代码在这里
可以知道,移位密码其实是很弱的,我们可以很容易将他破解出来,但是在古代那会还是挺有用的。
参考资料
【密码学原理与实践(第三版)】
【图解密码技术】
相关文章
猜你喜欢
-
电源全模组?做工绝对都精致
1、模组电源,是指某个电源包含若干个具有独立供电功用的模组单元。实践上,模组化电源源自效劳器范畴,或许说,只要效劳器才会用到模组化电源。 2、模组电源大多...
-
副词修饰?这是本很好的书
副词是指在句子中表示行为或状态特征的词,用以修饰动词、形容词、其他副词或全句,表示时间、地点、程度、方式等概念。 英语中,副词可以修饰的有:形容词,副词,...
-
螃蟹配什么吃?还可以腌着吃等
螃蟹是秋季比较受欢迎的一种美食,它的吃法比较多,可以蒸着吃,可以炒着吃,还可以腌着吃等,吃螃蟹的时候一般可以搭配一些炒菜和主食,建议和一些热性食物一起吃,可以搭...
-
蚊子的寿命?雌蚊可以活1-2个月
1、蚊子的一生要经过四个时期的变化,一般卵要经过2-3天孵出幼虫,幼虫需10-14天变成蛹,蛹需2天成熟发育为成蚊,新羽化的成蚊需1-2天的发育即可交配,而交配...
-
碧聊语音聊天室?没有乱七八糟得东西
拉拉语音聊天室~我一直用的是网聊.同志房间比较多.而且有免费房间用.网站经常会搞一些活动可以免费得道具~只要你运气好.再就是他们的服务器比其他聊天室的要稳定很多...