凯撒密码
-
原理:恺撒密码是通过将明文中所使用的字母表按照一定的字数 “平移” 来进行加密的。
-
加密过程
例如我们要加密apple这个单词,我们首先定义一个秘钥也就是平移的位数,例如我们的秘钥是’5’接下来我们就对每一个字母进行逐一平行加密
a–平移5个单位–f
p–平移5个单位–u
p–平移5个单位–u
l–平移5个单位–q
e–平移5个单位–j
这样我们就得到了密文fuuqj
而加密过程就是如下图:
-
解密过程
如果我们得到了这个秘文,并且知道秘钥,我们只需要将密文反向平移几位就得到了明文 -
凯撒密码的暴力破解
在恺撒密码中, 密钥就是字母表平移的字数。 由于字母表只有 26 个字母, 因此加密用的密钥只有 0 到 25 共 26 种( 平移 0 个字母实际上相当于没有加密, 但在这里我们也将这种情况考虑进去 )所以我们需要暴力破解时只需要将这26总秘钥都尝试一遍,这样总会有一个是他的原文
简单替换密码
-
原理:简单替换密码的加密过程是依次将明文中的每一个字母按照替换表替换成另一个字母,这样原理和凯撒密码一致,但是相当于每一个字母都有一个秘钥,每一个字母都可以平移不同的位数,这样的保存每一个字母的平移位数的表格就交(替换表),下图是一种常见的替换表。
-
加密过程
就是将每一个字母按照替换表,所表示的位数进行平移得到的结果就是替换加密的过程 -
破译方法
通过原理可知明文字母表中的 a 可以对应 A, B, C, …, Z 这 26 个字母中的任意一个( 26种 ), b 可以对应除了 a 所对应的字母以外的剩余 25 个字母中的任意一个( 25 种 )。 以此类推,我们可以计算出简单替换密码的密钥总数为:26 x 25 x 24 x 23 x ••• x 1 = 403291461126605635584000000 这样大的破解明文,可能永远也不会被发现明文,当然可能你们就认为他是一种完美的加密方法了,当然不是虽然我们用暴力破解的形式很难破解但是确可以用一种频率分析的密码破译方法。
频率分析原理
频率分析利用了明文中的字母的出现频率与密文中的字母的出现频率一致这一特性。
示例:假如你获得了一长串密文,可能如下所示:
MEYLGVIWAMEYOPINYZGWYEGMZRUUYPZAIXILGVSIZZMPGKKDWOMEPGROEIWGPCEIPAMDKKEYCIUYMGIF
RWCEGLOPINYZHRZMPDNYWDWOGWITDWYSEDCEEIAFYYWMPIDWYAGTYPIKGLMXFPIWCEHRZMMEYMEDWOMG
QRYWCEUXMEDPZMQRGMEEYAPISDWOFICJILYSNICYZEYMGGJIPRWIWAIHRUNIWAHRZMUDZZYAMEYFRWCE
MRPWDWOPGRWAIOIDWSDMEIGWYMSGMEPYYEYHRUNYARNFRMSDMEWGOPYIMYPZRCCYZZIOIDWIWAIOIDWE
YMPDYAILMYPMEYMYUNMDWOUGPZYKFRMIMKIZMEIAMGODTYDMRNIWASIKJYAISIXSDMEEDZWGZYDWMEYI
DPZIXDWODIUZRPYMEYXIPYZGRPDMDZYIZXMGAYZNDZYSEIMXGRCIWWGMOYM
然后我们先来分析每一个字母所出现的次数并排序你就得到了这样一个表格:
首先我们要知道句子中出现频率最高的字母,当然并不一定是密文中出现的字母但八九不离十,通过确认发现基本上出现频率最高的字母便是e,我们假设这段密文中出现次数最多的是e,即y=e或者i=,我们先假设i=e我们将所有y都替换为e便得到了一个这样的表:
而我们单词中含e并且出现次数最多的便是‘the’当然你也可以说是其他的,这里不接受抬杠,就是the,我们把刚替换的以e结尾的字母组合,发现mee中2个在这段文字中出现了多次,这里姑且将mee看做the,这样我们就得到了几个字母的替换表,即y=e,m=t,e=h于是我们得到这样的密文的表:
再让我们通过已知替换表替换的字母判断发现一个字词特别可疑’thpee’,我们可以通过联想th*ee有什么词,是不是’three’有点可疑,这里姑且又将p看做r这样我们又得到了一个字母的替换值即p=r现在我们就有4个替换值了即y=e,m=t,e=h,p=r好我们将这个值代入得到又一个新表:
我们再通过我们找到的几个词进行逆推,发现一个这样的词oet,我们解密的时候可以把所有的已经找出来的字母标红或者换成小写或者大写,关于et结尾的单词有哪些无非就是 bet 、 get 、 let 、 set 、 …这些组合中的哪、一种 我们先假设它是最常见的单词 get( 0=g )。
下面我们逐一列出所找到的组合以及假设的对应关系。
thethDWg 这个组合, 有可能是 the thing( D —► i, W— n )。
grINe 这个组合, 翻一下字典可以找到很多可能的单词, 如 grace 、 gradegrate、 grave、 gripe、 grofe、 …, 这可有点为难。 我们先假设 I到 greater 这 样 的 组 合, 因 此 I— a 应 该 是 正 确 的。 但 如 果 假 设 N —► c, 则 会 出 现tricening 这样的组合, 这个单词怎么看也不像是英语, 看来 N— c 是错误的。 ‘
英语中出现频率较高的字母中, 只有 o 还没有出现在我们的假设中。 相对地, 密文中出现频率较高的字母中, 还没有找到对应关系的有 G 和 Z。 我们先假设 G=o
使用上面所有的假设重新替换一下密文:
即:
y— e,
m— t,
e— h,
p— r
g— o
I— a
D — i
W— n
使用相关思路得后面·的值我就不一一列举了
thethingtoQRench ----the thing quench ( Q— q, R— u )
hotZuUUer —hot summer ( Z— s, U— m)
successagainanAagain—success again and again( A —► d )
triedaLter — tried after( L —► f )
whatXoucannotget — what you cannot get( X —> y)
thefoVandthegraNesonehotsummersday — the fox and the grapes one hot summers day( V —► x, N —► p )
替换过后我们发现:小写字母变多了也就是说破译的字母变多了
foxwasstroKKing–fox was strolling(K— l)
hetooJarunandaHumpandHustmissed—he took a run and a jump and just missed(H— j)(J — k)
hejumpedupFutwithnogreatersuccess—he jumped up but with no greater success(F — b)
butatlasthadtogiTeitup—but at last had to give it up(T-— v)
这样就剩下最后一个字母了
当然(b-z)
这样我们就得到了破译表
即:上下大小写一一对照
a b o d e f g h i j k 1 m
I F C A Y L O E D H J K U
n o p q r s t u v w x y z
W G N Q P Z M R T S V X B
这样我们就得到了明文
thefoxandthegrapesonehotsummersdayafoxwasstrollingthroughanorchardtillhecametoab
unchofgrapesjustripeningonavinewhichhadbeentrainedoveraloftybranchjustthethingto
quenchmythirstquothhedrawingbackafewpaceshetookarunandajumpandjustmissedthebunch
turningroundagainwithaonetwothreehejumpedupbutwithnogreatersuccessagainandagainh
etriedafterthetemptingmorselbutatlasthadtogiveitupandwalkedawaywithhisnoseinthea
irsayingiamsuretheyaresouritiseasytodespisewhatyoucannotget
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200324121042295.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ1NjMxNzgy,size_16,color_FFFFFF,t_70#pic_center)