维吉尼亚密码以破译复杂、工作烦琐而闻名,令众多破译者望而却步。但是破译的方法还是有的,由于工作量较大,所以一般借助一些破解工具。
由于不是一次一密乱码本作为的密钥,所以密钥的长度都是有限的,所以当密文越长时,我们破解出密码的可能性就越大。
破解方法以下题为例:
cgrpfrvanxsnycznbjqana
首先假设密钥的长度,我们从2开始(如果密钥长度是1的话,维吉尼亚密码就变成了恺撒密码了)。
假设密钥长为2。
以两个字母为一组加上空格:cg
rp fr va nx sn yc zn bj qa
na
再进行恺撒全排:
A
cg rp fr va nx sn yc zn bj qa
na
Z dh sq gs wb oy to zd ao
ck rb ob
Y ei tr ht xc pz up
ae bp dl sc pc
X fj us iu yd
qa vq bf cq em td qd
W gk vt
jv ze rb wr cg dr fn ue re
V
hl wu kw af sc xs dh es go vf
sf
U im xv lx bg td yt ei ft
hp wg tg
T jn yw my ch ue zu
fj gu iq xh uh
S ko zx nz di
vf av gk hv jr yi vi
R lp ay
oa ej wg bw hl iw ks zj wj
Q
mq bz pb fk xh cx im jx lt ak
xk
P nr ca qc gl yi dy jn ky
mu bl yl
O os db rd hm zj ez
ko lz nv cm zm
N pt ec se in
ak fa lp ma ow dn an
M qu fd
tf jo bl gb mq nb px eo bo
L
rv ge ug kp cm hc nr oc qy fp
cp
K sw hf vh lq dn id os pd
rz gq dq
J tx ig wi mr eo je
pt qe sa hr er
I uy jh xj ns
fp kf qu rf tb is fs
H vz ki
yk ot gq lg rv sg uc jt gt
G
wa lj zl pu hr mh sw th vd ku
hu
F xb mk am qv is ni tx ui
we lv iv
E yc nl bn rw jt oj
uy vj xf mw jw
D zd om co sx
ku pk vz wk yg nx kx
C ae pn
dp ty lv ql wa xl zh oy ly
B
bf qo eq uz mw rm xb ym ai pz mz
首先看A行:cg rp fr
va nx sn yc zn bj qa
na
当密钥第一个字母为A的时候,密码中出现了v、z、q等多个低频率的字母,所以密钥的第一个字母不是Z;
当密钥第二个字母为A的时候,密码中出现了x、c、j等多个低频率的字母,所以密钥的第二个字母也不是Z。
再看Z行:dh
sq gs wb oy to zd ao ck rb
ob
同理可知密钥的第一、二个字母都不是Z。
以此类推,可以发现:只有密钥的第一个字母为M时才基本符合标准频率,而第二个字母为O或M时才基本符合标准频率。
然后将两组组合一下:
当密钥为MO时,密码无意义,舍;
当密钥为MM时,密码无意义,舍。
至此可以判断出,密钥的长度不是2。
同样的道理,我们假设密钥长为3。
以两个字母为一组加上空格:cgr
pfr van xsn ycz nbj qan
a
再进行恺撒全排:
A
cgr pfr van xsn ycz nbj qan
a
Z dhs qgs wbo yto zda ock
rbo b
Y eit rht xcp zup aeb
pdl scp c
X fju siu ydq avq
bfc qem tdq d
W gkv tjv zer
bwr cgd rfn uer e
V hlw ukw
afs cxs dhe sgo vfs f
U imx
vlx bgt dyt eif thp wgt g
T
jny wmy chu ezu fjg uiq xhu
h
S koz xnz div fav gkh vjr
yiv i
R lpa yoa ejw gbw hli
wks zjw j
Q mqb zpb fkx hcx
imj xlt akx k
P nrc aqc gly
idy jnk ymu bly l
O osd brd
hmz jez kol znv cmz m
N pte
cse ina kfa lpm aow dna n
M
quf dtf job lgb mqn bpx eob
o
L rvg eug kpc mhc nro cqy
fpc p
K swh fvh lqd nid osp
drz gqd q
J txi gwi mre oje
ptq esa hre r
I uyj hxj nsf
pkf qur ftb isf s
H vzk iyk
otg qlg rvs guc jtg t
G wal
jzl puh rmh swt hvd kuh u
F
xbm kam qvi sni txu iwe lvi
v
E ycn lbn rwj toj uyv jxf
mwj w
D zdo mco sxk upk vzw
kyg nxk x
C aep ndp tyl vql
wax lzh oyl y
B bfq oeq uzm
wrm xby mai pzm
z
利用刚才的方法,我们能够得出下表:
密钥第一个字母:NOPRS
密钥第二个字母:ABCGMNO
密钥第三个字母:CNPRUV
不难看出,当密钥长度设定为3时,密钥的字母数大大增加了,说明密钥很有可能就是3。
但是却怎么组合也组合不出有意义的解,这是怎么回事呢?
这说明密钥的实际长度很有可能是3的倍数。
跳过4和5,我们直接假设密钥长为6。
A
cgrpfr vanxsn ycznbj qana
Z
dhsqgs wboyto zdaock rbob
Y
eitrht xcpzup aebpdl scpc
X
fjusiu ydqavq bfcqem tdqd
W
gkvtjv zerbwr cgdrfn uere
V
hlwukw afscxs dhesgo vfsf
U
imxvlx bgtdyt eifthp wgtg
T
jnywmy chuezu fjguiq xhuh
S
kozxnz divfav gkhvjr yivi
R
lpayoa ejwgbw hliwks zjwj
Q
mqbzpb fkxhcx imjxlt akxk
P
nrcaqc glyidy jnkymu blyl
O
osdbrd hmzjez kolznv cmzm
N
ptecse inakfa lpmaow dnan
M
qufdtf joblgb mqnbpx eobo
L
rvgeug kpcmhc nrocqy fpcp
K
swhfvh lqdnid ospdrz gqdq
J
txigwi mreoje ptqesa hrer
I
uyjhxj nsfpkf qurftb isfs
H
vzkiyk otgqlg rvsguc jtgt
G
waljzl puhrmh swthvd kuhu
F
xbmkam qvisni txuiwe lviv
E
ycnlbn rwjtoj uyvjxf mwjw
D
zdomco sxkupk vzwkyg nxkx
C
aepndp tylvql waxlzh oyly
B
bfqoeq uzmwrm xbymai
pzmz
解得密钥为:CONNON
原文为:
asecre
tmakea womanw oman
整理后得:
A secret
make a woman
woman.
读完本文后,你会发现破译维吉尼亚密码的快慢与破译的成功与否在很大的程度上取决与对于密钥长度的判断。因此当密文重复出现同一段字母组合的时候,你就要注意了:这两段重复字母的位置差,很有可能就是密钥长度的倍数。
例如:
(ABC)NFGAEIUHGOIUGSH(ABC)AGSDGASD……
文段中ABC重复出现。从前一个A开始数,数到后一个A的前一个字母,一共有18个字母。则密钥的长度很有可能就是3或6(9或18都太长了)。
利用这种方法,我们就能更快地找出密钥的长度,也就能更快地破解密码了。
注意:
1.判断是否与标准频率符合的时候,不仅要考虑是否低频率的字母出现得多,还要考虑是否高频率的字母出现得少。
2.标准频率顺序为:
etaoinshrdlcumwfgypbvkjxqz
原文:http://www.cnblogs.com/milantgh/p/3647672.html